Automated System for Customized Menu Item Production from User-Specific Data

ABSTRACT

A method of fulfilling custom food orders includes obtaining feedback from a user through an ordering application. The feedback relates to a first food item of a first food order following fulfillment of the first food order. The first food item includes a first ingredient. The method includes determining a preferred variation associated with the first ingredient based on the feedback and a first recipe used to make the first food item. The method includes updating a taste profile associated with the user based on the preferred variation. The method includes receiving, from the user, a second food order including a second food item. The method includes retrieving a second recipe associated with the second food item. The method includes selectively modifying the second recipe based on the taste profile. The method includes controlling a food assembly apparatus to prepare the second food item according to the second recipe.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.16/013,978 filed Jun. 21, 2018, which claims the benefit of U.S. patentapplication Ser. No. 14/208,149 filed Mar. 13, 2014, which claims thebenefit of U.S. Provisional Application No. 61/780,370 filed Mar. 13,2013. The entire disclosures of the applications referenced above areincorporated by reference.

FIELD

This invention relates generally to automated food preparation, and moreparticularly to user-specific food preparation in real time withmechanized systems.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a flowchart representation of a first method of one embodimentof the invention.

FIG. 2 is a flowchart representation of one variation of the firstmethod.

FIG. 3 is a flowchart representation of one variation of the firstmethod.

FIG. 4 is a flowchart representation of a second method of oneembodiment of the invention.

FIG. 5 is a flowchart representation of one variation of the secondmethod.

FIG. 6 is a functional block diagram of an example establishment atwhich a food creation robot is installed.

FIGS. 7A-7G are front views of a graphical user interface for a displayscreen or portion thereof.

FIGS. 8A-8G are front views of a graphical user interface for a displayscreen or portion thereof.

FIGS. 9A-9G are front views of a graphical user interface for a displayscreen or portion thereof.

FIG. 10 is a front view of a graphical user interface for a displayscreen or portion thereof.

FIG. 11 is a front view of a graphical user interface for a displayscreen or portion thereof.

FIGS. 12A-12D are front views of a graphical user interface for adisplay screen or portion thereof.

FIGS. 13A-13D are front views of a graphical user interface for adisplay screen or portion thereof.

FIGS. 14A-14D are front views of a graphical user interface for adisplay screen or portion thereof.

FIG. 15A is a front view of a graphical user interface for a displayscreen or portion thereof.

FIGS. 15B-15C are front views of a graphical user interface for adisplay screen or portion thereof.

FIGS. 16A-16G are front views of a graphical user interface for adisplay screen or portion thereof.

FIGS. 17A-17I are front views of a graphical user interface for adisplay screen or portion thereof.

FIGS. 18A-18F are front views of a graphical user interface for adisplay screen or portion thereof.

FIGS. 19A-19D are front views of a graphical user interface for adisplay screen or portion thereof.

FIGS. 20A-20D are front views of a graphical user interface for adisplay screen or portion thereof.

DETAILED DESCRIPTION

The following description of the embodiment of the invention is notintended to limit the invention to these embodiments, but rather toenable any person skilled in the art to make and use this invention.

As shown in FIG. 1, a method S100 for delivering a custom sandwich to apatron includes: receiving a selection for a sandwich type from a patronin Block S110; receiving, from the patron, a constraint related to thesandwich in Block S120; calculating a recipe and a cooking schedule forthe sandwich based on the selected sandwich type and the constraint inBlock S130; calculating a sandwich build start time based on adetermined location of the user and the cooking schedule for thesandwich in Block S140; and submitting the recipe, the cooking schedule,and the sandwich build start time to a robotic sandwich assemblyapparatus in Block S150.

The first method S100 functions to “optimize” flavor, timing, and aconstraint for a food product according to various entered and derivedfactors related to a patron and to a patron's food order. Fromhereinafter, the first method S100 is described generally in the contextof sandwiches and specifically in the context of burgers (e.g.,hamburgers, cheeseburgers, veggie burgers). For example, the firstmethod S100 can compromise a patron-elected constraint(s) (e.g.,calories, nutritional content, price, or hunger level), a patron's tastepreferences (e.g., based on patron feedback from a previous food order),and an order fulfillment time (e.g., based on a predicted time tocomplete the burger and a pickup preference of the patron) in order togenerate and submit a food order to meet the patron's dietary needs.However, the first method S100 can also be applicable to any otherassembled and/or prepared food such as salads, burritos, pizza, icecream cones, banana splits, ice cream cookie sandwiches, hot dogs, delisandwiches, falafel, gyros, layered cakes, tacos, crepes, waffles,pancakes, omelets, mixed (alcoholic or non-alcoholic) drinks, smoothies,etc.

In particular, the first method S100 functions to generate and submit afood order to a robotic sandwich assembly apparatus, such as describedin U.S. Provisional Application No. 61/656,106, which was filed on 6Jun. 2012 and which is incorporated herein in its entirety by thisreference. The robotic sandwich assembly apparatus can incorporatevarious modules, components, sensors, control systems, etc. to enableprecision fulfillment of custom burger orders, that is, accurate andrepeatable assembly of burgers with custom combinations and quantitiesof available meats, buns, toppings, and condiments as specified throughcustom burger orders. For example, the robotic sandwich assemblyapparatus can include a custom patty grinder that grinds fresh meats(e.g., beef, turkey, lamb, chicken, bison) and/or meat substitutes(e.g., soybeans, chickpeas, black beans) and stamps custom pattiesresponsive to custom patty orders, such as an 8 oz. patty with 10% beef,50% turkey, 40% bison for a first patron and a 5.5 oz. patty with 60%bison, 20% chicken, and 20% turkey for a second patron. The roboticsandwich assembly apparatus can also include a broiler or other type ofpatty cooker configured to cook each patty for a specific period of timeand/or at a specific temperature to fulfill a custom patty “doneness”order. For example, the broiler can include a conveyor and burner foreach of a general rare, medium, and well-done doneness setting, and therobotic sandwich assembly apparatus can control the speed and specifictemperature of each conveyor to meet each specific doneness requirementfor each burger that moves down the conveyor to cook. In anotherexample, the broiler can include a wide, constant-speed conveyor and aseries of burners that create a temperature differential across thewidth of the conveyor, wherein the custom patty grinder can dispenseeach patty at a particular location across the conveyor based on arespective doneness requirement. The robotic sandwich assembly apparatuscan also include a topping dispenser and a condiment dispenser, asdescribed in U.S. Provisional Application No. 61/656,106, configured toselectively slice and dispense fresh whole vegetables (e.g., lettuce,tomato, onion, pickle) and to selectively dispense specific quantitiesof condiments (e.g., mayonnaise, mustard, ketchup, relish) onto a bun.The robotic sandwich assembly apparatus can further include a bagging,boxing, or plating assembly configured to place a completed burger in abag, in a box, on a plate, or in any other packaging for delivery to apatron. However, the robotic sandwich assembly apparatus can include anyother components configured to independently or in cooperation enableprecision fulfillment of custom burger orders.

As shown in FIGS. 1 and 2, Blocks of the first method S100 can beimplemented on a mobile computing device, such as a smartphone or atablet. Blocks of the first method S100 can thus receive orderinformation, patron (GPS) location, payment information, patronfeedback, etc. through a touchscreen or other user interface on themobile computing device. A native sandwich-ordering applicationexecuting on the mobile computing device can further implement asandwich algorithm to effectively compromise taste, nutrition, price,hunger level, time, and/or other parameters for each sandwich orderentered by the patron, and the native application can further interfacewith a wireless communication module to transmit a custom sandwich orderto the robotic sandwich assembly apparatus either directly or through aremote server in communication with the robotic sandwich assemblyapparatus. Therefore, Blocks of the first method S100 can be implementeddirectly on a third-party electronic device (i.e., the patron's mobilecomputing device) in direct or indirect communication with the roboticsandwich assembly apparatus. In this implementation, the mobilecomputing device can store—or access from a remote database—past orderssubmitted by the patron, previous patron feedback, previous paymentmethods, previous receipts, a social networking profile of the patron,demographic information of the patron, the patron's location, tastes orpreferences common to the patron's demographic or location, etc. Themobile computing device can also function as a feedback channel for thepatron to submit feedback for the current burger order once the burgerhas been delivered, and the mobile computing device can store thisfeedback and/or communicate it to a remote database where it is storedin a personal taste profile of the patron and/or added to an aggregatetaste profile for multiple patrons, such as in the same region or of asimilar demographic.

Alternatively, as shown in FIG. 3, Blocks of the first method S100 canbe implemented on a remote computer system, such as a remote server incommunication with the robotic sandwich assembly apparatus (or a networkof robotic sandwich assembly apparatuses) through an Internet orEthernet connection. The computer system can be a cloud-based computer(e.g., Amazon EC2), a mainframe computer system, a grid-computer system,or any other suitable computer system. For example, the computer systemcan be a remote server that communicates with one or more roboticsandwich assembly apparatuses over HTTP (or TCP or UDP) protocolsthrough a web service (e.g., Amazon AWS). The computer system can thustransmit patron, order, and/or order status data to and/or from roboticsandwich assembly apparatuses over an Ethernet, cellular, Wi-Fi,satellite, or other suitable connection.

Yet alternatively, Blocks of the first method S100 can be implemented bya user interface arranged on the robotic sandwich assembly apparatus orwithin a restaurant, café, or other establishment housing the roboticsandwich assembly apparatus. For example, the touchscreen can beinstalled on an external housing of the robotic sandwich assemblyapparatus to receive ingredient selections from the patron and todisplay order information prior to submission to the robotic sandwichassembly apparatus. In another example, mobile computing devices can bearranged throughout the restaurant, etc., such as in tables or on walls,such that patrons can walk up to the mobile computing devices to buildand submit custom burger orders. However, Blocks of the first methodS100 can be implemented by any other device and in any other suitableway.

Block S110 of the first method S100 recites receiving a selection for asandwich type from a patron. Generally, Block S110 functions to receiveingredient selections and sandwich preferences from the patron such thatsubsequent Blocks of the first method S100 can build and then submit acustom burger order to meet the patron's current appetite. Block S110can also receive ingredient selections, in addition to the sandwich typeselection, such as through a native application executing on a mobilecomputing device.

In one implementation, Block S110 receives a sandwich type selectionfrom the patron. In one example, the patron opens a native custom burgerapplication, initiates a new order, and selects a sandwich from astandard menu of sandwich types, such as including a plain hamburger, acheeseburger, and a bacon and mushroom burger, as shown in FIG. 1. Inanother example, Block S110 filters the standard menu according to pastorders submitted by the patron or perceived tastes of the patron inorder to simplify the patron's selection, and the patron selects,through the native custom burger application, a type of sandwich fromthe limited menu. In yet another example, Block S110 receives datapertaining to “trending” custom burger orders from other patrons orcommon burger types selected by patrons in the same region or of ademographic similar to the patron and appends the standard menu orreplaces items on the standard menu with the trending or common burgertypes, and the patron selects, through the native custom burgerapplication, a type of sandwich from the modified menu. Block S110 canthen retrieve the patron's selection entered into the nativeapplication.

Alternatively, Block S110 can receive a patty and bun selection from thepatron. For example, the native application can display bun types (e.g.,standard bun, extra-large bun, English muffin, lettuce wrap) adjacentcorresponding radio buttons, and Block S110 can receive the patron's bunselection based on the state of each radio button. Block S110 can alsoreceive a patty selection based on the state of each radio buttonadjacent a corresponding patty type (e.g., 100% lean beef, chickenbreast, veggie burger). Alternatively and as described above, the nativeapplication can display meat types (e.g., beef, turkey, lamb, chicken,bison) adjacent linked sliders corresponding to a percentage or weightof each meat type in the patty, and Block S110 can receive a percentageor weight of each type of meat to grind for the custom patty based onthe position of each slider, as shown in FIG. 1.

As shown in FIG. 1, Block S110 can further receive topping and condimentselections from the patron though the native application. For example,the native application can display a list of available toppings andcondiments (e.g., cheese, tomato, lettuce, onion, mushroom, fried egg,mayonnaise, ketchup, mustard, relish, pickle, pepper, salt, BBQ sauce,jalapeños, sprouts) with corresponding adjacent radio buttons, and BlockS110 can receive the patron's ingredient selection based on the state ofeach radio button. In another example, the native application candisplay the list of available toppings and condiments with correspondingadjacent sliders, each slider specifying a range, such as “none to alot” (e.g., for ketchup or pepper) “none to 2 oz.,” (e.g., for lettuce)or “none to 2 tsp.” (e.g., for mayonnaise). In this example, Block S110can receive the patron's preference for exclusion or inclusion ofvarious ingredients as well as a preferred amount of each ingredient.

Block S110 can further control the menu of burger types, bun types,patty types, meats, toppings, and/or condiments presented to the patronfor selection within the native application. For example, Block S110 canreceive the patron's location from the patron's mobile computing device(e.g., GPS coordinates), identify a nearest robotic sandwich assemblyapparatus, and poll the robotic sandwich assembly apparatus for buns,patties, meat, toppings, condiments, and/or other ingredients loadedinto the robotic sandwich assembly apparatus and currently available.Block S110 can further access current orders and/or predicted incomingorder ingredients to predict ingredient availability when the patron'sorder is queued to the robotic sandwich assembly apparatus. Block S110can subsequently adjust ingredient lists displayed to the patron throughthe native application such that the patron has a substantially completelist of available ingredients that also excludes items not availablefrom the target (i.e., local) robotic sandwich assembly apparatus.

Additionally or alternatively, Block S110 can automatically select allor a portion of the ingredients in the patron's new order. In oneimplementation, in response to an “I'm hungry,” “I want a burger,” orother input by the patron into the native application, Block S110accesses a past burger order by the patron and modifies (e.g., adjustsingredient quantities and doneness specifications) the past orderaccording to the patron's order feedback in order to generate aselection of burger ingredients and preferences that better meets thepatrons taste, nutritional, and/or other preferences. In anotherimplementation, Block S110 accesses past patron orders, past patronorder feedback, a time of day, a recent social networking communicationor post, patron trends or habits, patron demographic and location,and/or any other patron or order information to generate a selection ofburger ingredients and preferences particular to the patron at theparticular time. In this implementation, Block S110 can thus implement aburger recommendation service to recommend particular burger ingredientsand/or preferences to meet a patron's current dietary needs.

Block S120 of the first method S100 recites receiving, from the patron,a constraint related to the sandwich. Generally, Block S120 functions toreceive a nutritional preference, a hunger level, a pricing preference,a timing, or another constraint from the patron such that Blocks S130and S140 can generate a burger recipe and burger schedule thateffectively compromises the patron's current hunger level, dietaryneeds, tastes, and burger and timing preferences. In one example, BlockS120 can receive a preference for a total number of calories in theburger based on the position of a calorie slider bar set by the patronthrough the native application, as shown in FIG. 1. Similarly, BlockS120 can receive a preference for a range of calories in the burgerbased on the state of a radio button with a labeled calorie range (e.g.,600-700 calories, 700-800 calories, etc.) set by the patron through thenative application. Block S120 can additionally or alternatively receivea selection for a quantity (e.g., weight) of vegetables, a number ofgrams of carbohydrates or fat, a “greasiness,” a weight or calorie ratioof vegetables to meat, or other nutritional preference through one ormore radio buttons, slider bars, or other input regions displayed on themobile computing device and set by the patron through the nativeapplication.

Block S120 can also receive a hunger level of the patron. For example,Block S120 can receive the patron's hunger level based on the positionof a slider bar with extremes labeled “feels more like snack time” and“better make it a horse,” the slider bar is displayed on the patron'smobile computing device and set by the patron through the nativeapplication. In this example, Block S120 can normalize the relative(i.e., non-scientific) hunger level selection based on previous patronorder sizes and associated patron feedback to estimate an actual volumeor weight of the burger necessary to satiate the patron. Alternatively,in a similar example, the slider bar can include sandwich weight,volume, or mass labels such that Block S120 can directly access dataindicating a weight, volume, or mass of the burger necessary to satiatethe patron.

Block S120 can also receive a burger or meal pricing preference, such asbased on a patron-selected position of a slider bar associated withprice. However, Block S120 can receive any other suitable patron-electedconstraint.

Block S130 of the first method S100 recites calculating a recipe and acooking schedule for the sandwich based on the selected nutritionalcontent. Generally, Block S130 functions to combine selectedingredients, sandwich preferences, nutrition preferences, and hungerlevel into a sandwich order specifying specific quantities of particularingredients and a specific cooking schedule that substantiallyeffectively compromises order details provided by the patron.

As shown in FIGS. 1 and 2, Block S130 can implement an algorithm thatselectively adjusts the quantity of particular ingredients and/orcooking schedules to generate the custom burger order. The algorithm canreceive as inputs feedback from the patron and other customers inresponse to fulfilled burger orders, patron nutrition selection and/orhunger level, selected ingredients and/or ingredient quantities, pattydoneness, degree of bun toasting, and/or other entered, collected,and/or extrapolated burger-related data pertaining to past burger ordersand the current burger order. By weighting the various inputs, such aseach ingredient selection and initial quantity, Block S130 can adjusthow much of each ingredient is added to the burger and how the burger iscooked to “optimize” flavor, nutrition, and meal size for the patron.For example, Block S130 specifies an amount of meat by ¼ oz., the amountof tomato by slice of predetermined thickness, amount of table salt tothe tens of milligrams, toasted bun to a percentage brownness,temperature of the patty to a single degree Fahrenheit, temperaturegradient of the patty through its thickness, percentage meat compositionof the patty, patty cook time to a second, etc., all of which can beimplemented by the robotic sandwich assembly apparatus to precisely(i.e., accurately and repeatably) build a burger of substantiallyexacting weight, content, and nutrition (e.g., calories, grams of fat,sodium). Block S130 can also select the algorithm, from a set ofalgorithms, that is particularly relevant to the patron, such as analgorithm generated through feedback from patrons with tastes, location,and/or demographic similar to that of the patron. Alternatively, BlockS130 can select the algorithm that is specific to the patron and refinedover time as the patron submits additional burger orders and suppliescorresponding feedback. However, Block S130 can implement a unique,common, default, or other algorithm to calculate the recipe and thecooking schedule for the burger.

Block S130 (and the algorithm) can account for the configuration of therobotic sandwich assembly apparatus and ingredients currently loaded tothe robotic sandwich assembly apparatus (as described above). Forexample, the robotic sandwich assembly apparatus can include a toppingdispenser as described in U.S. Provisional Application No. 61/656,106,wherein operation of the topping dispenser yields a topping (e.g.,tomato, pickle, onion) slice of a particular thickness determined by aposition of a respective slicing blade. In this example, Block S130accounts for a step-like function of topping quantity, wherein eachoperation of the topping dispenser deposits a particular amount (orparticular range of) topping onto the burger. In another example, theconfiguration of the condiment (e.g., ketchup) dispenser in the roboticsandwich assembly apparatus can enable application of a continuum ofquantities of condiment onto the burger, such as no ketchup up to thecurrent total volume of ketchup in a ketchup container loaded into therobotic sandwich assembly apparatus. In this example, Block S130 canalso account for a viscosity of a condiment, a size of the bun or patty,and/or other ingredients on which the condiment is dispensed to set anupper limit on the amount of condiment that can be dispensed. In thisexample, Block S130 can scale the upper limit on applied condimentvolume linearly with patty weight, and, for any given order, set theupper limit on applied relish volume (relatively high viscosity) higherthan the upper limit on applied aioli volume (relatively low viscosity).In another example, the robotic sandwich assembly apparatus isconfigured to grind fresh meats into custom patties and press pattiesbetween ½ oz. and 16 oz. in size. In this example, the resolution of themeat grind for each meat type can be ±5%, and Block S130 can thus set acontinuum of patty weights between 3 oz. and 16 oz. with custom meatgrinds including between 10% and 100% of the available meats (e.g., 100%beef, or 10% beef, 15% buffalo, 75% turkey) for the robotic sandwichassembly apparatus.

In one implementation, Block S130 calculates initial burger nutrition(e.g., calories, grams of fat, vitamin B) from the ingredientselections, ingredient quantities, and cooking preferences (e.g.,doneness) received from the patron and/or generated in Block S110. BlockS130 then compares the initial burger nutrition to the nutrition settingreceived in Block S120. Block S130 can also calculate an initial size ofthe burger based on patron-entered or generated burger settings and thencompare the initial burger size with the hunger level received in BlockS120. If either of the foregoing comparisons indicate that misalignmentbetween flavor and nutrition preferences and/or between burger size andhunger preferences, Block S130 can implement the foregoing algorithm toadjust the ingredient selections, ingredient quantities, and/or cookingpreferences to reduce (i.e., optimize) the misalignment.

In one example, Block S110 can receive GPS coordinates of a mobilecomputing device used by the patron to submit an ingredient selectionand burger preferences, and Block S130 can access customer feedback datain the patron's location or region to determine that customers in thepatron's location are typically not able to taste less than 1 tsp ofmayonnaise, and are sensitive to between 1 and 2 tsp of mayonnaise, andeither can't discern more than 2 tsp of mayonnaise or think that morethan 2 tsp of mayonnaise is too much. Thus, when Block S110 receives aselection for mayonnaise from the patron, Block S130 can set an upperand lower mayonnaise volume of 1 tsp and 2 tsp, respectively.Furthermore, Block S130 can determine that the patron's preferred burger(or total meal) calorie content is less than a predicted total number ofcalories for the burger (or meal) with the patron's selected ingredientsand ingredient quantities. In response, Block S130 can reduce the amountof mayonnaise to apply to the burger from an average of 1.5 tsp to 1 tspand, if this does not suffice in reducing the total burger (or meal)calories, Block S130 can increase patty cook time (i.e., doneness) toreduce the grease (and calorie from fat content) of the burger.Furthermore, if the adjusted patty doneness (related to cooking time andtemperate) approaches a boundary of patty doneness and the total burgercalorie content is still excessive, Block S130 can reduce the totalweight of the patty and/or replace a percentage of beef in the pattywith a corresponding percentage of turkey, chicken, soybeans, and/orchickpeas. For example, if the patron specifies 20% done, Block S130 canset an upper limit of 30% doneness to meet the patron's nutritionalpreferences without substantially sacrificing the taste of the burger,which can be based on previous feedback from the patron, feedback fromother customers in the patron's area, and/or feedback from othercustomers of a demographic or tastes similar to that of the patron.Similarly, if the patron specifies 50% beef, Block S130 can set a lowerlimit of 40% beef to meet the patron's nutritional preferences withoutsubstantially sacrificing taste. Additionally or alternatively, BlockS130 can proportionally (e.g., linearly, exponentially) reducemayonnaise amount, increase cook time, and/or adjust patty content.

In another example, prior feedback from the patron suggests that thepatron has a strong liking for tomato and lettuce, though he exhibits aslight preference for lettuce over tomato. Furthermore, prior feedbacksuggests that the patron is particularly sensitive to doneness, andBlock S130 can thus set a threshold change in patron-selected pattydoneness to 5% rather than 10%, which is standard for customers withless sensitivity to doneness. As in the previous example, Block S130 candetermine that the patron's total burger calorie selection is less thana predicted total number of calories for the burger with the patron'sselected ingredients and ingredient quantities. In response, rather thanincreasing patty doneness, Block S130 can reduce patty size and replacea lost patty weight (before or after cooking) with lettuce and tomato at1.3:1 ratio of lettuce to tomato based on the patron's slight preferencefor lettuce in order to meet the patron's taste preferences received inBlock S110 and nutrition preference and hunger level received in BlockS120.

In yet another example, Block S120 receives a price preference from thepatron, such as a maximum burger price (e.g., $7.00) or a preferredburger price range (e.g., $5.00-$5.99), and Block S130 calculates atotal burger price based on selected ingredients and ingredientquantities and compares this price to the patrons preferred price. Ifthe total burger price exceeds the patron's price preference, Block S130can selectively reduce the quantity of certain ingredients. For example,if beef is the most expensive meat in the robotic sandwich assemblyapparatus and the patron has selected a 100% beef patty, Block S130 canreplace a percentage of beef in the patty with a less expensive meat,such as turkey. This may also complement a requirement to reduce a totalcaloric content of the burger. Block S130 can additionally oralternatively reduce the size of the patty and replace the reducedweight of the burger with a vegetable that is less expensive by weightthan cooked meat. However, Block S130 can calculate the burger recipeand specify the cooking schedule for the burger in any other way,according to any other schema or algorithm, and based on any otherpatron-related data.

Block S130 can further include displaying the “optimized” burger recipeto the patron on the mobile computing device. For example, Block S130can include displaying, on a touchscreen of the mobile computing device,the quantity of each specified ingredient in the burger, the totalnutritional content of the burger, the specified doneness of the patty,the toast level of the bun, the price of the burger, and/or any otherrelevant order information. Block S130 can further enable the patron tomodify the recipe and/or cooking schedule, such as with radio buttons orslider bars, and further update in real time the nutritional content,size or weight, and/or price of the burger in response to patronmodifications. Block S130 can record changes to the “optimized” recipefor application to future orders by the patron.

Block S130 can further prompt the patron to submit payment information,such as by entering credit or debit card information, swiping orcapturing an image of a credit or debit card, linking to an electronicpayment profile or checking account, submitting electronic or tangiblegift card information, or selecting a payment source from a previoustransaction. Block S130 can therefore also receive and/or authenticate apayment from the patron, and the payment can cover the price of theburger as well as any side, drink, dessert, or other food item.Additionally or alternatively, Block S130 can guide the user to make apayment at the restaurant, through the robotic sandwich assemblyapparatus, or in any other way prior to receiving the burger. However,Block S130 can implement any other suitable or pertinent functionality.

Block S140 of the first method S100 recites calculating a sandwich buildstart time based on a determined location of the patron and the cookingschedule for the sandwich. Generally, Block S140 functions to specify asandwich build start time such that the sandwich may be assembled,packaged, and readied for the patron at or by a particular time. BlockS140 can estimate the time required to fulfill the order (e.g., to asecond) based on any one or more of a patty grind and press time (e.g.,based on patty size), broil time (e.g., based on a specified pattydoneness), bun toast time, selected toppings and condiments andspecified topping and condiment quantities, known burger-componenttransfer times (e.g., between broiler and topping stations), etc.

Block S140 also functions to determine the patron's location and toestimate a pickup time for the burger order based on the patron'slocation. For example, Block S140 can interface with the patron's mobilecomputing device to determine the patron's location, such as byreceiving GPS coordinates from a GPS sensor integrated into the mobilecomputing device, triangulating the patron's position based oncommunication with local cellular towers, or identifying a localwireless router in communication with the mobile computing device. In anexample implementation, Block S140 can determine that the patron iscurrently occupying the restaurant housing the robotic sandwich assemblyapparatus and thus estimates the preferred pickup time to be as soon aspossible. In another example implementation, Block S140 determines thatthe patron is outside the restaurant, such as several city blocks fromthe restaurant. In this example implementation, Block S140 can comparesubsequent locations of the patron (based on time) to determine if thepatron is walking, driving, or riding a bus to the restaurant. Based onan estimated speed and/or predicted local traffic, Block S140 canpredict when the patron will arrive at the restaurant and estimate thepreferred pickup time accordingly. Alternatively, Block S140 can receivea preferred pickup time entered into the native application by thepatron explicitly, though Block S140 can function in any other way todetermine the location of the patron and estimate a preferred orderpickup time.

Block S140 can also predict a preferred order completion time based onpatron preferences and/or past patron feedback. In one example, BlockS140 can determine that the patron prefers piping-hot burgers based onpast feedback suggesting that his burger was too cold. Based on thisfeedback, Block S140 can set the preferred order completion time as notbefore the patron enters the restaurant (and is ready to receive theburger). In a similar example, Block S140 can determine that the patronprefers cooled burgers (e.g., cooled for five minutes after completion)based on past feedback suggesting that his burger was too hot. Based onthis feedback, Block S140 can set the preferred order completion time asbetween four and five minutes prior to the patron entering therestaurant.

As shown in FIG. 3, Block S140 can further access data pertaining tocurrent orders in an order queue of the robotic sandwich assemblyapparatus. For example, Block S140 can access estimated completion timesfor each order, specified order completion times relative to preferredorder pickup times, and ingredients allocated for each order. Based onthis data, Block S140 can also estimate restocking times for variousingredients and/or update a restocking schedule to maintain an adequatesupply of ingredients to fulfill orders in the queue.

Based on the foregoing information, including the order completion time,the estimate arrival time of the patron, the preferred order completiontime, the current robotic sandwich assembly apparatus queue, aningredient restocking schedule, etc., Block S140 can thus specify anorder start time substantially likely to fulfill order, patron, androbotic sandwich assembly apparatus requirements.

Alternatively, Block S140 can specify the order start time that simplyindicates that the order is to be added sequentially to the currentqueue. Block S140 can also specify the order start time that withholdsthe order from the queue until all other orders in the patron's partyhave been submitted such that members of the patron's party can receivetheir orders together (sequentially and uninterrupted). Block S140 canfurther prioritize the patron's order, such as based on a reward programsubscribed to by the patron, by bumping the patron's order forward inthe queue. However, Block S140 can function in any other way to specifya start time for the burger.

Block S150 of the first method S100 recites submitting the recipe, thecooking schedule, and the sandwich build start time to a roboticsandwich assembly apparatus. Generally, once the cooking recipe andschedule is accepted by the patron in Block S130 and the start time forthe burger is specified in Block S140, Block S150 functions to uploadorder-related data to the robotic sandwich assembly apparatus to fulfillthe customized burger order at or by the specified delivery time. Asdescribed above, the recipe and cooking schedule can be transmitted fromthe patron's mobile computing device directly to the robotic sandwichassembly apparatus or indirectly routed via a remote network. VariousBlocks of the first method S100 can alternatively be implemented on theremote server, which can transmit order-related data directly orindirectly to the robotic sandwich assembly apparatus, such as over theInternet or other network. Once the order is submitted to the roboticsandwich assembly apparatus, the robotic sandwich assembly apparatus canimplement the order by assembling and cooking the burger according tothe recipe and schedule.

Block S150 can further include tracking the patron's burger order as theburger is assembled in the robotic sandwich assembly apparatus. Forexample, Block S150 can interface with the robotic sandwich assemblyapparatus to identify a current stage of the burger, such asmeat-grinding, patty-pressing, broiling, bun toasting, topping addition,condiment addition, bagging, and ready-for-pickup. At each stage, BlockS150 can notify the patron of his burger's status, such as by pushing anotification to the patron's mobile computing device. For example, BlockS150 can push notifications that recite “Patty press complete; beginningbroil” and then “Tomatoes added; moving to pickles” to the patron'smobile computing device substantially in real time. In thisimplementation, Block S150 can further enable the patron to makelast-minute changes to his order before each schedule (e.g., pattydoneness) or ingredient order is realized. For example, upon receivingthe “Tomatoes added; moving to pickles” notification, the patron canaccess the burger order through the native application executing on themobile computing device and remove pickles from the order, and BlockS150 can receive the change and update the order accordingly.

As shown in FIG. 3, Block S150 can further specify a packaging label forthe order. For example, when the burger is completed, the roboticsandwich assembly apparatus can place the burger in a bag or in a box.Block S150 can thus set information to be etched or printed on the bag,on the box, or on a sticker automatically applied to the bag or box. Forexample, Block S150 can specify any one or more of the patron's name,nickname, or username, a custom burger name set by the patron (e.g.,“The Fat Jared,” the “Feelin' Chubs Today But Dying For A Burger,” orthe “Vegans Eat Burgers Too”), a list of ingredients and/or ingredientquantities, a cooking schedule or patty doneness, nutritional content ina ‘Daily Value’ table, a total number of calories, a number of likessubmitted by friends of the patron through a social networking system inresponse to a post to the social networking system of the patron'sorder, and/or any other suitable or relevant information. However, BlockS150 can function in any other way to submit the recipe, the cookingschedule, and the sandwich build start time to the robotic sandwichassembly apparatus.

The first method S100 can further interface with one or more opticalsensors (i.e., one or more digital cameras) arranged within the roboticsandwich assembly apparatus to transmit an image of the patron's burgerduring assembly. For example, the first method S100 can transmit a livevideo feed of the patron's burger to the patron's mobile computingdevice, such as through a native sandwich-ordering application executingon the mobile computing device. In this example, the live video feed canimages of the patty cooking in the broiler, the bun toasting in atoaster, application of selected toppings and condiments, and finalpackaging of the completed burger. The live video feed can also includean augmented reality overlay, such as a dot or other marker indicatingthe specific patty, bun, etc. that belongs to the patron's burger, suchas for images that depict multiple buns or patties. The augmentedreality overlay can also show the temperature of the patty (e.g., asmeasured by a laser-type contactless temperature sensor arranged withinthe robotic sandwich assembly apparatus) as the patty moves through thebroiler, the weight of each topping and/or condiment added to theburger, the time remaining to complete the burger order, completedand/or remaining steps in the burger order, or any other relevantinformation. The first method S100 can thus enable the patron to viewand monitor assembly of his burger substantially in real time. The firstmethod S100 can also enable the user to make last-minute changes to hisorder, such as before his burger enters a particular module within therobotic sandwich assembly apparatus. For example, the first method S100can enable the user to adjust the doneness of the patty before the pattyenters the broiler, can enable the user to change the topping selectionfor the burger before the burger and bottom bun enter the toppingslicer, and can enable the user to change the condiment selection forthe burger before the burger, bottom bun, and toppings enter thecondiment dispenser. The first method S100 can thus provide the patronwith real-time burger assembly feedback through the live video feed andenable last-minute order changes based on current burger assemblyprogress.

2. Second Method and Applications

As shown in FIG. 4, a method S200 for personalizing food ordersincludes: from a patron, receiving a taste feedback for a first fooditem in a first food order submitted previously by the patron in BlockS210; predicting an absolute food preference of the patron from thefirst food order in Block S220; predicting a relative taste preferenceof the patron based on the taste feedback and a recipe of the first fooditem in Block S230; generating a taste profile of the patron based onthe absolute food preference and the relative taste preference in BlockS240; from the patron, receiving a selection for a second food item in anew food order in Block S250, the second food item different than thefirst food item; applying the taste profile of the patron to a recipefor the second food item to generate a personalized recipe in BlockS260; and submitting the personalized recipe with the new food order toa robotic food assembly apparatus in Block S270.

As shown in FIG. 4, one variation of the second method S200 includes:identifying an absolute food preference of a patron from a trend withina set of food orders previously submitted by the patron in Block S220;identifying a relative taste preference of the patron from the set offood orders in Block S230; generating a taste profile of the patronbased on the absolute food preference and the relative taste preferencein Block S240; from the patron, receiving a selection for a new fooditem in a new food order in Block S250, the new food item unique to theset of food items; applying the taste profile of the patron to a stockrecipe for the new food item to generate a personalized recipe in BlockS260; and submitting the personalized recipe with the new food order toa food ordering system in Block S270.

As shown in FIG. 5, one application of the second method S200 includes:from a first patron, receiving a first order for a custom food item inBlock S280; in response to authorization by the first patron, sharingthe custom order with a second patron in Block S290; from a secondpatron, receiving a selection for a duplicate of the custom food item ina second food order in Block S250; retrieving a taste profile for thesecond patron in Block S240, the taste profile defining an absolute foodpreference and a relative taste preference associated with the secondpatron; applying the taste profile to a recipe for the custom food itemto generate a personalized recipe for the second food order in BlockS260; and submitting the personalized recipe with the second food orderto a food ordering system in Block S270.

Generally, the second method S200 functions to aggregate order historyof and/or order feedback submitted by a patron to one or more foodestablishments (e.g., a restaurant, a food ordering system, a roboticsandwich assembly apparatus, etc.) into a taste profile specific to thepatron and defining preferences for types and quantities of ingredientsapplicable to a variety of food items, and the second method S200 thenapplies the patron's taste profile to a new food item selected by thepatron in a new food order to automatically personalize the food itemfor the patron. In particular, the second method S200 amasses types offood items ordered by the patron, ingredients added and/or removed fromthe food items by the patron, and/or feedback submitted by the patron inresponse to fulfillment of the food items into a taste profile thatdefines absolute taste preferences—such as whether or not to include aningredient in a future food item ordered by the patron—and relativetaste preferences—such as how much of an ingredient to include in thefuture food item relative to a stock (i.e., preset, predefined) recipefor the future food item. Then, during or following construction of anew food order including a new food item, the second method S200automatically applies the patron's taste profile to the new food item byediting the recipe for the food item to reflect the absolute andrelative taste preferences of the patron as defined in the patron'staste profile.

The second method S200 therefore functions to personalize food items fora patron, such as standard menu items or custom menu items customized bythe patron or another patron, to substantially ensure that any food itemordered by the patron will be palatable, satisfactory, if not muchenjoyed by the patron. As above, from hereinafter, the second methodS200 is described generally in the context of sandwiches andspecifically in the context of burgers (e.g., hamburgers, cheeseburgers,and veggie burgers).

In one example, the second method S200 generates and implements apatron's taste profile that is specific to hamburgers. In this example,as the patron frequents a hamburger joint (e.g., a hamburger jointhousing a robotic sandwich assembly apparatus as described above) overtime, the second method S200 collects data on types of hamburgersselected by the patron, such as plain hamburgers, veggie burgers,cheddar cheese and mushroom burgers, avocado and tomato burgers, etc.and extrapolates a preference for a “type” of burger (e.g., greasy,fresh, loaded with toppings, vegetarian, etc.) preferred by the patronas trends (or patron habits) become apparent in the patron's orderhistory. The second method S200 also collects data on selections foringredients to add to and to remove from standard hamburgers (e.g.,addition of pickles and removal of tomatoes), selections for pattydoneness (e.g., rare, well-done), selections for hamburger size (e.g., ⅓lb., ½ lb., ¾ lb.), and/or selections for total hamburger (or meal)calories, etc. submitted by the patron in previous food orders forhamburgers. The second method S200 additionally or alternativelycollects patron feedback on hamburgers provided in fulfilled foodorders, such as qualitative feedback reciting “too salty,” “perfectamount of mustard,” “not quite enough food,” “patty too dry,” “perfecttoast on the bun,” and/or “burger was a little too wet.” The secondmethod S200 then assembles these data into a taste profile for thepatron—or updates the patron's existing taste profile—that specifies oneor more flavor profiles preferred by the patron (e.g., sweet, savory,light, greasy, meaty, vegetarian, etc.), absolutely preferences forwhich ingredients to include and which to exclude from personalizedhamburger recipes for the patron, how much to cook a patty and toast abun, and how much salt, pepper, mustard, ketchup, tomato, relish, onion,lettuce, and/or pickle, etc. to load onto a burger. Then, when thepatron initiates a new food order for a new hamburger that was notpreviously ordered by the patron, the second method S200 can apply thepatron's taste profile to a recipe for the new hamburger to align thepreparation method and ingredients in the new hamburger with thepatron's taste preferences. Similarly, when the patron initiates a newfood order for a same hamburger specified in a previous order by thepatron, the second method S200 can personalize a recipe for thehamburger with the patron's taste profile to match the flavor of thehamburger to that which was ordered previously by the patron, or thesecond method S200 can adjust the recipe for the hamburger according tothe patron's taste profile to better match the patron's tastepreferences over the hamburger to that which was previously delivered tothe patron.

In the application described above, the second method S200 can furtherfunction to share details of a custom food item submitted by a firstpatron with a second patron such that the second patron can order thesame custom food item as the first patron. The second method S200 canthen apply the taste profile of the second patron to the second patron'sorder for the custom food item to personalize the custom food item. Inparticular, in this application, the second method S200 can implementthe second patron's taste profile to align a recipe for a custom fooditem with preparation and ingredient type and quantity preferences ofthe second patron, thereby substantially ensuring that the custom fooditem ordered by the first patron and copied into an order by the secondpatron will be palatable, satisfactory, if not much enjoyed by thesecond patron.

2.1 Taste Feedback

Block S210 of the second method S200 recites, from a patron, receiving ataste feedback for a first food item in a first food order submittedpreviously by the patron. Generally, Block S210 functions to collectdata pertaining to the patron's palate (i.e., tastes) and to pass thesedata to Block S220 and Block S230 for extrapolation of absolute andrelative taste preferences that are aggregated into the patron's tasteprofile in Block S240. Block S210 can thus collect taste feedback forone or more food items previously ordered by the patron, and subsequentBlocks of the second method S200 can cooperate to apply a correspondingtaste profile of the patron to a food item never before ordered by thepatron. Block S210 can additionally or alternatively collect tastefeedback for a food item previously ordered by the patron, andsubsequent Blocks of the second method S200 can cooperate to apply thepatron's taste profile to a new order for the same food item, such as tosubtly improve a match between the flavor of the food item to thepatron's palate or to collect more specific feedback on nuances of theflavor of the food item and/or the patron's palate.

In one implementation, Block S210 collects taste feedback of the patronin the form of qualitative responses from the patron to the first fooditem through the native food ordering application following fulfillmentof the first food order. In one example, the patron submits a food orderthrough a native food ordering application executing on his mobilecomputing device (e.g., a smartphone), and the Block S210—implementedwithin the native food ordering application—tracks the user's locationwhile inside a restaurant or within a predefined distance of a roboticfood assembly apparatus (shown in FIG. 5) that fulfills the food order.In this example, once the patron moves outside of a geofenced areaaround the restaurant or moved beyond the predefined distance from therobotic food assembly apparatus—as detected through a location (e.g.,GPS) sensor within he patron's mobile computing device—Block S210delivers a notification to the patron through the native food orderingapplication to review his meal. In another example, the patron cansubmit his food order through a digital kiosk arranged within arestaurant and/or coupled to the robotic food assembly apparatus, thekiosk can collect the patron's email address, and Block S210 can email asurvey for the food order to the patron's email address. However, BlockS210 can prompt the patron to provide feedback for one or more foodorders in any other way and through any other suitable conduit.

In this foregoing implementation, Block S210 can prompt the patron toenter absolute or scaled feedback for one or more parameterscorresponding to the previous food order. For example, Block S210 canprompt the patron to select either of a “YES” or “NO” radio button forone or more of the following prompts: “are you full,” “are you stillhungry,” “was your burger too greasy,” “was your patty undercooked,”“what your burger too salty,” “did your burger have enough veggies,”“did we add enough mustard,” “did you like the pickles on your burger,”and/or “would your burger have tasted better with poppy seeds on yourbun,” etc., as shown in FIG. 4. Block S210 can additionally oralternatively prompt the patron to move a slider bar between “notenough” and “too much” positions or between “not satisfied” and “fullysatisfied” positions for one or more of the following prompts: “did youget enough to eat,” “did your burger have enough relish,” “was your bunsufficiently toasted,” “did we properly cook your patty to medium-rare,”and/or “was you burger at the right temperature when you began toconsume it,” etc., as shown in FIG. 4. Block S210 can present any ofthese prompts to the patron through the food ordering application,through an email application, or through a web browser, etc. executingon the patron's mobile computing device or other computing deviceaccessed by the patron. However, Block S210 can collect any otherfeedback related to the patron's previous food order and in any otherway.

Block S210 can additionally or alternatively retrieve one or more foodorders previously submitted by the patron and extract types of fooditems, ingredient additions and subtractions, and/or food preparationelections selected by the patron. For example, Block S210 can retrieve aset of food orders from a database of previous food orders submitted toa particular robotic food assembly apparatus, a set of robotic foodassembly apparatuses, a food truck, a set of food trucks, a restaurant,and/or a restaurant chain, etc., wherein food orders in the set aregrouped by a phone number, a system of payment (e.g., a credit card), anordering account username or profile, email address, or other identifierprovided by the patron with submission of each order. Block S210 canthen extract relevant food types, ingredient additions and subtraction,and/or preparation selections from the food orders in specific to thepatron. However, Block S210 can collect food order and/or food itemfeedback related to the patron in any other suitable way.

2.2 Absolute Food Preference

Block S220 of the second method S200 recites predicting an absolute foodpreference of the patron from the first food order. Block S220 cansimilarly recite identifying an absolute food preference of a patronfrom a trend within a set of food orders previously submitted by thepatron. Generally, Block S220 functions to extract one or more absolutefood-related preferences from one or more food orders previouslysubmitted by the patron. In particular, Block S220 identifies trends infood orders submitted by the patron, such as orders for various foodtypes (e.g., hamburgers, hot dogs, omelets, salads, and/or burritos,etc.), orders for a particular food type (e.g., hamburgers), or ordersfor a particular category or genre of a particular food type (e.g.,Asian-style hamburgers, gourmet hamburgers, cheeseburgers, bacon andmushroom cheeseburgers, or veggie burgers, etc.).

In one example, Block S220 analyzes a set of previous food orderssubmitted by the patron and identifies habitual preparation, ingredientaddition, and/or ingredient deletions elections made by the patronacross the set of previous food orders. In this example, if the patronsubmits ten orders for a hamburger over the course of eight weeks, andnine out of the ten orders elected medium-rare and no pickles, BlockS220 can predict that the patron prefers his hamburger patties cookedmedium-rare and his hamburger delivered without pickles. Furthermore, inthis example, if two of the ten orders elected no tomatoes, five of theten orders specified extra tomatoes, and the remainder of the ten orderselected no change to the amount of tomatoes specified in the stockrecipes for the corresponding burgers, Block S220 can tag changes tostock tomato specifications as non-habitual.

In one implementation, Block S220 correlates election of a particularingredient for addition to one or more food items—of a particular foodtype—in previous food orders with a preference for the particularingredient in food items of the particular food type. For example, BlockS210 can collect food orders specific to hamburgers previously orderedby the patron, and Block S220 can correlate consistent (e.g., repeated)election of a particular topping (e.g., pickles, lettuce, tomato, friedegg, or jalapeños, etc.) for addition onto an ordered hamburger with thepatron's preference for addition of the particular topping onto anyhamburger ordered by the patron. In this implementation, Block S220 canalso apply different thresholds to consistency or repetition of toppingaddition election based on a commonality of the ingredient. For example,Block S220 can set a low threshold for patron preference for commoningredients like tomato, onion, lettuce, etc. such that a preference forsuch a common ingredient is associated with the patron if the patronelects to add such a common ingredient at a relatively low frequency(e.g., within at least 65% of orders). In this example, Block S220 canalso set a high threshold for patron preference for uncommon ingredientslike fried egg, apple, and guacamole, etc. such that a preference forsuch an uncommon ingredient is associated with the patron only if thepatron elects to add such an uncommon ingredient at a relatively highfrequency (e.g., within at least 90% of orders).

Block S220 can similarly identify a trend in elected omission of aparticular ingredient in one or more food orders previously submitted bythe patron. In particular, Block S220 can correlate deletion of aparticular ingredient from one or more previous orders for a particulartype of food item with a distance for the particular ingredient in fooditems of the particular food type. For example, Block S210 can collectfood orders specific to hamburgers previously ordered by the patron, andBlock S220 can correlate consistent deletion of a particular toppingfrom hamburger orders with the patron's preference that the particulartopping not be served with his hamburgers.

Block S220 can also identify a trend in food item preparation electionby the patron and correlate this trend with a preference for how aparticular type of food item is prepared. For example, Block S220 canidentify a trend in election of a particular meat doneness forhamburgers ordered by the patron across multiple food orders. Forexample, if the patron routinely orders his hamburger patty well-done,Block S220 can identify a patron preference for well-done hamburgerpatties. Block can yet similarly identify a trend in food item sizeelection by the patron and correlate this trend with a preference fooditem size. For example, if the patron consistently orders hamburgerswith ⅓ lb. patties, Block S220 can correlate this patron elections witha preference for hamburgers with ⅓ lb. patties.

However, Block S220 can identify a patron preference for any otherabsolute parameter for any food order, for a food item of a particulartype, or for a food item within a particular category or genre of aparticular food item type, such as (maximum) price, (maximum number of)calories, bun type or style, ingredient (e.g., sauce, topping, cheese),combinations of ingredients, meat type or blend of meats in a patty,delivery method (e.g., plated, wrapped, or boxed), etc.

2.3 Relative Taste Preference

Block S230 of the second method S200 recites predicting a relative tastepreference of the patron based on the taste feedback and a recipe of thefirst food item. Block S230 can similarly recite identifying a relativetaste preference of the patron from the set of food orders. Generally,Block S230 functions to extract one or more relative food-relatedpreferences from one or more food orders and/or food order feedbackpreviously submitted by the patron. In particular, Block S230 identifiespatron preferences for relative degrees of parameters of a food item,such as how much of an ingredient to include or to what extent toprepare (e.g., cook) an ingredient relative to standard (i.e., stock)recipe for a food item.

In one implementation in which Block S210 collects qualitative feedbackfrom the patron in the form of radio button selections and/or slidersbar adjustments, Block S230 can correlate a qualitative responsesubmitted by the patron with a preference for a relative quantitativedifference between a delivered amount of a particular ingredient in afood item and a standard amount of the particular ingredient specifiedin a stock recipe for the food item. In one example in which Block S210prompts the patron to respond to the question “was your burger toogreasy” by selecting a “YES” or a “NO” radio button, Block S230 cancorrelate a “NO” response with either no preference for greasiness of ahamburger or with indicator that the (actual or predicted) greasiness ofthe hamburger was satisfactory. However, in this example, Block S230 cancorrelate a “YES” response to this question with a patron preference fora quantitative reduction in greasiness in delivered hamburgers, such as25% less grease than standard for all hamburgers ordered by the patron.In this example, Block S220 can additionally or alternatively implementthis patron feedback to set a maximum greasiness of 8% by mass for allhamburgers ordered by the patron. In a similar example in which BlockS210 prompts the patron to respond to the question “did your burger haveenough veggies” by selecting a “YES” or a “NO” radio button, Block S230can correlate a “NO” response with a preference for more veggies on allhamburgers ordered by the patron (or all burgers of the same type orcategory), such as a preset step increment of 20% more veggies byweight—relative to a standard or stock recipe—for all hamburgers orderedby the patron (or all burgers of the same type or category). However,Block S230 (and Block S220) can similarly correlate binary (i.e., “YES”or “NO”) feedback for any other related question with a preference for arelative change in an amount of an ingredient or preparation procedurefor a food item, such as relative to a stock recipe for a food item.

In another example of the foregoing implementation in which Block S210receives a slider bar adjustment between a “not enough” position and a“too much” positions for a prompt reciting “did your burger have enoughrelish,” Block S230 can assign the extreme “not enough” position with apatron preference for 25% more relish, the extreme “too much” with apatron preference for 25% less relish, and the center position on theslider bar with a preference for no change in application of relish onthe corresponding food item, and Block S230 can extrapolate preferencesfor percentage changes in delivered relish along a spectrum between 25%less and 25% more based on final placement of the slider along theslider bar. In this example, Block S230 can thus identify a patronpreference for application of a single ingredient into a food item. In asimilar example in which Block S210 receives a slider bar adjustmentbetween a “not enough” position and a “too much” positions for a promptreciting “was your burger salted to taste,” Block S230 can assign theextreme “not enough” position with a patron preference for 15% moretotal salt, the extreme “too much” with a patron preference for 15% lesstotal salt, and the center position on the slider bar with a preferencefor no change in total salt content of the corresponding food item, andBlock S230 can extrapolate preferences for percentage changes in totalburger salt content along a spectrum between 15% less and 15% more basedon final placement of the slider along the slider bar. Thus, in thisexample, Block S230 can identify a patron preference for an aggregateamount of an ingredient in a food item relative to a stock or standardamount of the ingredient specified in a recipe, or Block S230 canidentify a patron preference for an relative amount of the ingredient inmultiple components of a food item, such as an amount of salt in a bun,an amount of salt in a burger patty, and/or an amount of salt in a sauceor relish, etc. Block S230 can thus extrapolate—from qualitativefeedback provided by the patron—a preference for a percentage differencebetween a delivered amount of an ingredient (e.g., salt, pickle, tomato,ground beef, etc.) in a food item and a standard amount of an ingredientspecified in a recipe for the food item.

Block S230 can also identify preferred combinations (i.e., ratios) ofingredients in a food item from qualitative feedback collected from thepatron in Block S210. In one example in which Block S210 receives aslider bar adjustment between a “not enough” position and a “too much”positions for a prompt reciting “did your burger have the right amountof ‘gameyness,’” Block S230 can assign a spectrum of ratios of groundlamb to ground beef in hamburger patties to slider positions along theslider bar, such as a lamb-to-beef ratio of 1:0 for the extreme “notenough” position, a lamb-to-beef ratio of 0:1 for the extreme “too much”position, a lamb-to-beef ratio of 1:1 for the center between the twoextreme positions, and a linear change between the 1:0 and 0:1 positionstherebetween. Block S230 can thus extrapolate a preference for a pattymeat blend from qualitative feedback provided by the patron.

Block S210 can additionally or alternatively collect quantitativefeedback from the patron, such as by receiving a response to a prompt“should we change the amount of salt in your burger next time” in theform of a slider position selection between “20% less” and “20% more”positions, and Block S230 can identify a patron taste preferenceaccordingly.

In the foregoing implementations and examples, Block S230 can alsonormalize definitions assigned to the extremes of the slider bar. Forexample, one patron may historically treat a slider bar as a ternaryinput selection for “too rare,” “perfect,” and “too done” in response toa prompt reciting “was your patty cooked to your liking,” and Block S230can convert a bar position nearest the “too rare” to a patron preferencefor a center patty temperature that is 5° F. higher than the centertemperature of the corresponding delivered patty and a bar position thatis nearest the “too done” position to a patron preference for a centerpatty temperature that is 2° F. lower than the center temperature of thecorresponding delivered patty. In this example, a second patron mayhistorically pay careful attention to the position of the slider bar,and Block S230 can thus handle a slider bar input for patty doneness asa continuum of preferred changes in center patty temperature, such as toa resolution of 0.1° F. In this example, Block S230 can thus analyze thepatron's feedback history to identify how the patron responds to promptsand then normalize new feedback accordingly.

Block S230 can also normalize a particular feedback to a correspondingfood item order. For example, the patron can customize a standardhamburger by ordering the hamburger with extra (e.g., 100% extra)pickles, and Block S210 can receive feedback from the patron indicatingthat the hamburger has too many pickles. Block S230 can thus extrapolatea patron preference for more than a standard amount of pickles specifiedin a hamburger recipe but less than 100% extra pickles in a deliveredhamburger. In this example, Block S230 can thus cooperate with BlockS240 to set a target difference of a 50% increase in delivered picklesover a standard amount of pickles specified in a hamburger recipe forhamburgers ordered by the patron.

Like Block S220, Block S230 can extrapolate a relative taste preferenceof the patron from a series of orders submitted by the patron over time.In particular, Block S230 can identify trends in order feedback providedby the patron, in food item types (or categories, genres, etc.) orderedby the patron, and/or in ingredients added and/or removed from fooditems ordered by the patron, and Block S230 can extrapolate one or moretaste preferences from these trends. For example, if the patronrepeatedly supplied feedback indicating that his hamburger was toogreasy, Block S230 can identify a patron preference for less grease inhis hamburger with a sufficiently high degree of confidence. In anotherexample, if the patron occasionally provides feedback indicating thathis burger was too salty and other times provides feedback that hisburger was under-salted, Block S230 can ignore this feedback as lackingconsistency (e.g., impulsive). However, in this example, Block S230 cancombine these over- and under-salted feedback responses with a known orpredicted amount of salt (and other parameters) delivered in thecorresponding hamburgers—such as feedback indicating too much salt in alarge bacon and cheddar cheese burger and feedback indicating too littlesalt in a small plain hamburger with lettuce—to extrapolate a preferencefor a particular amount of salt in a hamburger, a preference for aparticular percentage of salt by weight in a hamburger, or a suitablerange of total salt or percentage salt by weight in a hamburger, etc.

Like Block S220, Block S230 can identify relative taste preferences thatcorrespond to multiple food types (e.g., hamburgers, hot dogs, omelets,salads, and/or burritos, etc.), that correspond to a particular foodtype (e.g., hamburgers), and/or that correspond to a particular categoryor genre of a particular food type (e.g., Asian-style hamburgers,gourmet hamburgers, cheeseburgers, bacon and mushroom cheeseburgers, orveggie burgers, etc.). For example, as a preceding example in which thepatron submits ten orders for a hamburger over the course of eightweeks, and nine out of the ten orders elected medium-rare and nopickles, if two orders specified no tomatoes were for bacon, mushroom,and cheese burgers, if the five orders specifying extra tomatoes werefor veggie hamburgers, and the two orders specifying the standard amountof tomato were for plain hamburgers, Block S230 can determine that thepatron does not like tomatoes on his bacon, mushroom, and cheeseburgers, that he prefers extra tomatoes on his veggie burgers, and thathe trusts a preset amount of tomatoes for his standard hamburgers (i.e.,as defined in a recipe for standard hamburgers).

Block S230 can also combine taste feedback of the patron with tastefeedback of another patron to predict a taste preference of the patron,such as if limited taste feedback is available from the patron. Forexample, if only one or two feedback examples are available from thepatron though the patron has submitted several (e.g., more than ten)orders for hamburgers, Block S230 can identify a second patron who hasordered similar hamburgers and/or provided feedback similar to thatprovided by the patron. Block S230 can then apply taste preferences ofthe second patron to the patron to augment or supplement predicted tastepreferences of the patron. Block S230 can additionally or alternativelyaccess a demographic of the patron, identify a second patron of ademographic similar to the demographic of the patron, and apply (e.g.,merge) a relative food preference of the second patron with tastefeedback submitted by the patron to predict a relative taste preferenceof the patron.

2.4 Taste Preference Conditions

Blocks S220 and S230 can also identify trends in patron elections orfeedback for absolute or relative food item parameters based on mealtype, time of day, day of week, patron mood, total meal size, etc. andidentify or predict the patron's taste preferences for these one or moreconditions accordingly. For example, Block S220 can identify a patronpreference for veggie patties and Block S230 can identity a patronpreference for 50% more lettuce and tomatoes for hamburgers orderedaround lunch time on weekdays, and Blocks S220 and S230 can cooperate toidentify patron preferences for rare 50% beef and 50% bison patties,mushrooms, and double cheddar cheese for hamburgers ordered aroundFriday and Saturday evenings. Block S240 can thus generate multipletaste profiles for the patron, each associated with one or moreconditions defining its application, such as meal type, time of day, dayof week, patron mood, and/or total meal size, etc. for an orderinitiated by the patron.

However, Blocks S230 and S240 can function in any other way to extractabsolute and relative taste preferences of the patron, respectively,from previous food orders and/or food order feedback previouslysubmitted by the patron.

2.5 Taste Profile

Block S240 of the second method S200 recites generating a taste profileof the patron based on the absolute food preference and the relativetaste preference. Generally, Block S240 functions to aggregate one ormore absolute and relative taste preferences of the patron into a tasteprofile that can be applied to subsequent food orders submitted by thepatron to automatically personalize these subsequent food orders for thepatron. For example, Block S240 can generate a taste profile that isapplied to an any food order submitted to a robotic food assemblyapparatus or to a restaurant within a restaurant chain, to any food itemof a particular type (e.g., a hamburger), to any food item within aparticular category or genre food type (e.g., veggie burgers,Asian-style hamburgers). Block S240 can also aggregate absolute and/orrelative taste preferences of the patron into multiple taste profiles,each corresponding to a different single or set of conditions, such as afood item type, a food item genre or category, the patron's mood, a mealtype, a time of day, a day of the week, and/or a meal size, etc.

In one example implementation, Block S240 generates the taste profilethat specifies absolute and relative values for constructing a hamburgerto satisfy the patron's palate, Block S240 can generate a taste profilethat specifies an absolute or relative amount of one or more ingredients(e.g., toppings, condiments) to be included in a hamburger ordered bythe patron, a type and/or amount of meats and extra ingredients to forminto a patty for a hamburger ordered by the patron, a target donenesslevel for a patty in a hamburger ordered by the patron, a bread type andtoast level of a bun in a hamburger ordered by the patron, a saltinessand greasiness level of a hamburger ordered by the patron, a maximumnumber of calories (or calories from fat, carbohydrates, etc.) in ahamburger ordered by the patron, and/or a maximum price of a hamburgerordered by the patron, etc. In this example implementation, once a neworder or selection for a hamburger is received from the patron in BlockS250, Block S260 can apply the patron's taste profile to the selectedhamburger, such as by compromising these parameters for the particularhamburger selected as described above in the first method S100.

Once the taste profile is generated for the patron, Block S240 can storethe patron's taste profile locally with the patron, such as on a mobilecomputing device (e.g., a smartphone) executing a native food orderingapplication used by the patron to order food items. Alternatively, BlockS240 can store the patron's taste profile remotely such as in a databaseof taste profiles connected to a computer network. Block S240 can thusassociate the taste profile with an identifier of the correspondingpatron, such as a system of payment (e.g., a credit card), a phonenumber, an email address, a name, or a username and password, etc. suchthat the taste profile can be recalled and properly applied to futureorders by the patron.

However, Block S240 can function in any other way to aggregate tastepreferences identified in Block S220 and S230 into a taste profiledefining application of the patron's taste preferences to food itemssubsequently ordered by the patron.

2.5 New Food Order

Block S250 of the second method S200 recites from the patron, receivinga selection for a food item in a new food order. Generally, Block S250can implement methods and techniques similar to Block S110 of the firstmethod S100 to receive a selection for a food item in a new food order.For example, the patron can initiate a new food order through a nativefood ordering application executing on his smartphone, wherein thenative food ordering application displays a menu of food items supportedby a robotic food assembly apparatus within a nearby restaurant orwithin a restaurant currently occupied by the patron, and Block S250 canreceive a selection for a new food item from the menu of supported fooditems through the native food ordering application. Alternatively, thepatron can initiate a new food order through an electronic kioskarranged within a restaurant or connected to a robotic food assemblyapparatus within a restaurant occupied by the patron, and Block S250 canreceive a selection for a new food item through the electronic kiosk.However, Block S250 can collect a selection for one or more food itemsin a new food order from the patron in any other suitable way.

2.6 Personalized Recipe

Block S260 of the second method S200 recites applying the taste profileof the patron to a recipe for food item in the new food order togenerate a personalized recipe. Generally, Block S260 functions to applyan absolute taste preference and/or a relative taste preference of thepatron to a standard or custom food item ordered by the patron, therebyimproving alignment of a flavor profile of the (new) food item to thepatron's palate and thus automatically ‘personalizing’ the standard orcustom food item for the patron. In particular, Block S260 accesses a(standard or custom) recipe for the selected food item and modifiestypes and/or amounts of ingredients and cooking parameters for the fooditem specified in the recipe. In one example, Block S250 receives aselection for a BBQ bacon cheddar hamburger, a menu item that the patronhas not ordered before (or has not ordered within a threshold period oftime, such as within the past six months), and Block S260 applies thetaste profile—which was generated by analyzing food orders and patronfeedback for other food items—to the BBQ bacon cheddar hamburger tosubstantially ensure that a flavor profile of the BBQ bacon cheddarhamburger aligns with patron's taste preferences. In another example,Block S250 receives a selection for a custom hamburger with a fried eggand sprouts, a custom hamburger that the patron has ordered previouslyand that was previously analyzed in Blocks S220 and S230, and Block S260applies the patron's taste profile to the custom hamburger to bettermatch that flavor profile of the custom hamburger to the patron's palatein comparison to an order for the same custom hamburger that waspreviously delivered to the patron.

Block S260 can apply the taste profile of the patron to a food itemadded to a new food order as the patron assembles the food order (e.g.,at a kiosk within a restaurant location), once the patron submits thefood order and before the food order is uploaded to a food orderingsystem (e.g., within a native food ordering application executing on thepatron's smartphone), and/or once the food order is submitted to thefood ordering system (e.g., on a remote server or computer networkconnected to a robotic food assembly apparatus). For example, Block S260can access the patron's taste profile from local memory within thepatron's mobile computing device as the patron interfaces with a nativefood ordering application executing thereon to build an order. BlockS260 can similarly retrieve the taste profile from a remote server, suchas based on a user profile logged-in to the native food orderingapplication executing on the patron's mobile computing device.Alternatively, Block S260 can access or retrieve the taste profile andapply the taste profile to a new food order accordingly by matchingidentifying information extracted from a system of payment supplied bythe patron to a particular taste profile stored in a taste profiledatabase. However, Block S260 can access and select the taste profilefor the patron in any other suitable way.

In one implementation, Block S260 applies an absolute taste preferenceof the patron to the food item in the new food order. In one example,for the taste profile that specified dislike for a particularingredient, Block S260 accesses a standard recipe for the selected fooditem and generates a personalized recipe that omits the particularingredient from the standard recipe for the food item selected by thepatron. In a similar example, the taste profile specifies a dislike fora particular ingredient if a second ingredient is included in a fooditem, and Block S260 accesses a standard recipe for the selected fooditem, identifies the second ingredient in the standard recipe for theselected food item, and generates a personalized recipe that omits theparticular ingredient from the standard recipe on behalf of the patron.Block S260 can similarly generate a personalized recipe that adds aparticular ingredient to a standard recipe for a selected food itembased on the taste profile for the patron, such as by specifyingaddition of (a present or standard amount of) tomato or relish in arecipe for a hamburger ordered by the patron. In another example, BlockS260 can generate the personalized recipe that specifies a particularmeat doneness, a patty size, and/or a patty grind mix (e.g., 20% lamb,80% beef) for a hamburger selected by the patron. However, Block S260can apply any other absolute taste preference to a standard, stock, orcustom recipe for a food item selected by the patron to generate apersonalized recipe for the food item that compensates for the patron'spalate.

In another implementation, Block S260 applies a relative tastepreference of the patron to the food item in the new food order. In oneexample, Block S260 generates the personalized recipe that specifies anamount of a particular ingredient to include in the food item based on arelative taste preference defined in the taste profile and a standardamount of the particular ingredient specified in the stock recipe. Inthis example, Block S260 can specify 23% more BBQ sauce than set in thestandard recipe and/or 33% less pickle(s) than set in the standardrecipe for a hamburger.

Block S260 can also selectively apply absolute and relative tastepreferences defined in the patron's taste profile. For example, BlockS240 can generate the taste profile that assigns conditions to variousabsolute and relative taste preferences, such as time of day, meal type,day of week, location, etc. In this example, Block S260 can test whethercurrent conditions for selecting taste preferences in the taste profileare currently applicable to the order when the patron initiates an order(or at a time that the patron specifies for pickup of the order), andBlock S260 can apply these taste preferences to the food orderaccordingly.

Block S260 can also apply a patron's absolute and/or relative tastepreferences across categories or genres of food. For example, previousBlocks of the method can extrapolate taste preferences from the patron'sprevious orders for salads, burritos, pizza, ice cream cookiesandwiches, hot dogs, deli sandwiches, falafel, gyros, layered cakes,crepes, waffles, pancakes, and/or omelets and generate a taste profileof the user accordingly, and Block S260 can apply this (generic) tasteprofile of the patron to a new order submitted by the patron for tacos,thereby tailoring the tacos to the user's taste preferences even if thepatron has not previously ordered tacos. In this example, Block S260 canalso select past food orders by the patron that are particularlyrelevant to the new food order (e.g., crepes, burritos, and delisandwiches with similar ingredients) and trigger Block S240 to generatea taste profile from these select orders.

However, Block S260 can function in any other way to adjust or modify astock, standard, or existing customized recipe for a food item accordingto any one or more absolute and/or relative taste preferences defined inthe patron's taste profile to personalize the recipe for the food itemfor the patron prior to preparation of the food item.

Block S270 of the second method S200 recites submitting the personalizedrecipe with the new food order to a robotic food assembly apparatus.Block S270 can similarly recite submitting the personalized recipe withthe new food order to a food ordering system. Generally, Block S270functions like Block S150 of the first method S100 to deliver the foodorder with the personalized recipe generated in Block S260 to a systemor apparatus that handles preparation and delivery of the food item. Forexample, Block S270 can upload the personalized recipe with the foodorder to a computer network connected to the robotic food assemblyapparatus—described above—which automatically implements thepersonalized recipe to build the corresponding personalized food item(e.g., a hamburger) for the patron. However, Block S270 can function inany other way to transmit, upload, or otherwise deliver the food orderwith the personalized recipe to a robotic food assembly apparatus, to afood ordering system, etc. on behalf of the patron.

2.7 Sharing

In one application, the second method S200 further includes Block S280,which recites, from a first patron, receiving a first order for a customfood item, and Block S290, which recites, in response to authorizationby the first patron, sharing the custom order with a second patron.Generally, in this application, Blocks S280 and S290 cooperate tocollect a custom food order from one patron (i.e., the first patron) andto then share the custom food order with another patron (i.e., thesecond patron). Once the custom food item is selected for the new foodorder by the second patron in Block S250, Blocks S240 and S260 cooperateto automatically apply the second patron's taste preferences to thecustom food item to align the types, quantities, and preparation ofingredients in the custom food item to the taste preferences of thesecond patron. For example, if the custom food item was ordered by thefirst patron with minimal salt and extra mustard, once the second patronselects the custom food item in Block S250, Block S240 can retrieve thesecond patron's taste profile that defines a preference for extra (e.g.,32% more) salt and limited (e.g., no more than 5% total mass of the fooditem) mustard, and Block S260 can modify the custom recipe accordinglybefore delivery of the personalized recipe to a local restaurant and/orrobotic food assembly apparatus on behalf of the second patron.

Alternatively, in this application, Blocks S240 and S260 can apply thesecond patron's taste profile to the advertisement such that the recipefor the custom food item is personalized for the second patron beforethe second patron even selects the custom food item for a new foodorder. For example, if the custom food order previously submitted by thefirst patron specifies a hamburger with pickles, ketchup, jalapeños, andbleu cheese but the second patron's taste profile precludes pickles,Block S260 can edit the custom recipe that is advertised to the secondpatron such that the second patron only sees—and can select for his foodorder—a hamburger with ketchup, jalapeños, and bleu cheese.

In this application, Block S280 recites, from a first patron, receivinga first order for a custom food item. Generally, Block S280 functionslike Blocks S110 and S120 of the first method S100 to collect a customfood order from the first patron, such as a food order defining aselection for a particular type of hamburger with a particular set oftoppings. Once the first patron submits the order for the custom fooditem, Block S280 can store the custom order (e.g., on a remote server orcomputer network) such that the custom order can be later copied into anew order once selected by the second patron.

Block S280 can also retrieve a (first) taste profile corresponding tothe first patron and then normalize the order for the custom food itemaccording to (absolute and/or relative) taste preferences of the firstpatron as defined in the first patron's taste profile. For example, ifthe first taste profile indicates that the first patron prefers 50% lessmustard than normal (i.e., relative to standard recipes), twice at muchtomato as is normal, and 40% lamb and 60% beef patties rather than 100%beef patties in his hamburgers, Block S280 can normalize the customorder for the food item—as ordered by the first patron—by increasing theamount of mustard specified in the recipe for the custom food item by100% (to offset the 50% reduction typical of the first patron), reducingthe amount of tomato specified in the recipe for the custom food item by50% (to offset the 100% increase in tomato typical of the first patron),and resetting the patty composition of the recipe for the custom fooditem to 100% beef. Block S280 can thus store a ‘normalized’ version ofthe custom food item, which can then be personalized for the secondpatron with the second patron's taste profile once elected in asubsequent food order by the second patron.

Furthermore, in this application, Block S290 recites, in response toauthorization by the first patron, sharing the custom order with asecond patron. Generally, Block S290 functions to present the customfood order for the custom food item to the second patron and tocooperate with Block S250 to enable the second patron to ‘copy’ thecustom food item into his own (new) food order. Thus, Block S290 andBlock S250 can cooperate to enable the second patron to order the samecustom (or even standard) food item ordered locally (e.g., at the samerestaurant) or remotely (e.g., in a different city or country) by thefirst patron who may be a friend, a family member, a celebrity, etc.

In one implementation, once the first patron submits the order for thecustom food item, Block S290 prompts the first patron to share thecustom order. For example, after the first patron submits his customfood order, Block S290 can prompt the first patron to share his customorder on an online social networking system and then automatically postthe custom order—with a corresponding custom recipe for the food itemand/or a pointer (i.e., electronic link) to the custom recipe for thefood item—in a public venue within the online social networking systemon behalf of the first patron once the first patron confirms the sharingaction. A post for the custom food item can then be accessed by userswho follow, who are connected to, who are friends with, or who areotherwise granted access to food orders made by the first patron. Inthis example, the second patron can review the post on the online socialnetworking system through a native social networking application or webbrowser executing on a computing device (e.g., a smartphone or tablet)and then select a link or other pointer within the post to initiate anew food order with the custom food item, such as within the onlinesocial networking system or within a food ordering application alsoexecuting on the computing device and which is automatically opened uponselection of the post or pointer within the native social networkingapplication or web browser. Alternatively, Block S290 can transmit anemail notification or other electronic communication—for the customorder shared by the first patron—directly to the second patron, such asby transmitting a notification to the second patron's mobile computingdevice, transmitting an email to the second patron's email account,presenting the custom order within the second patron's food orderingaccount accessed through a native food ordering application executing onthe patron's mobile computing device, or by posting a notificationdirectly onto the patron's profile within the social networking system.

Block S290 can also selectively share the custom order with the secondpatron. For example, Block S290 can access a (first) taste profile ofthe first patron, compare this taste profile with the taste profile ofthe second patron, and then share the custom food item with the secondpatron only if the taste profiles of the first and second patronsexhibit at least a threshold similarity. In a similar example, BlockS290 can access an order history of the first patron, compare this orderhistory with order history of the second patron, and then share thecustom food item with the second patron only if the order histories ofthe first and second patrons exhibit at least a threshold similarity,such as at least a threshold number of orders for identical food items(e.g., the same cheeseburger) within a threshold period of time (e.g.,six months). However, Block S290 can share the first patron's customorder with the second patron in any other suitable way and/or inresponse to any other condition or similarity between the first andsecond patrons.

In this application, Block S250 can thus receive a selection by thesecond patron for the custom food item from within an email, within anative food ordering application executing on the second patron's(mobile) computing device, within a web browser, and/or within an onlinesocial networking system, etc. Blocks S240, S260, and S270 of the secondmethod S200 can then execute as described above to access a tasteprofile of the second patron, to apply the taste profile of the secondpatron to the custom food item to personalize the custom food item forthe second patron, and to then submit a food order for the personalizedfood item to a food ordering system and/or to a robotic food assemblyapparatus for delivery to the second patron.

In one example, if the second patron initiates a new food order from anative food ordering application executing on his smartphone (or othermobile computing device), Block S240 can retrieve the taste profile thatis stored locally in memory on the second patron's smartphone. BlockS260 can then execute locally on the second patron's smartphone topersonalize the recipe for custom food item for the second patron.Alternatively, the native food ordering application executing on thesecond patron's smartphone can pass an identifier of the second patronto a food ordering system that can then retrieve the taste profile froma database of taste profiles based on the identifier of the secondpatron. In this example, once Block S250 receives the selection for thecustom food item from the second patron, Block S260 can execute on thefood ordering system (or other computer network) to apply the secondpatron's taste profile to the recipe for the custom food item selectedby the second patron. However, Block S240 can select, identify, and/orretrieve the taste profile of the second patron from any other local orremote memory or database, and Block S260 can execute locally (e.g., onthe second patron's smartphone) or remotely (e.g., on a computer networkor food ordering system) to modify the recipe for the custom food itemspecifically for the second patron.

However, Blocks S280, S290, S250, S240, S260, and S270 can cooperate inany other way to share a custom food item ordered by a first patron witha second patron and to automatically personalize the custom food itemfor the second patron based on the second patron's taste profile.

The second method S200 s and robotic sandwich assembly apparatus of theembodiments can be embodied and/or implemented at least in part as amachine configured to receive a computer-readable medium storingcomputer-readable instructions. The instructions can be executed bycomputer-executable components integrated with an application, applet,host, server, network, website, communication service, communicationinterface, hardware/firmware/software elements of a user computer ormobile device, or any suitable combination thereof. Other systems andmethods of the embodiments can be embodied and/or implemented at leastin part as a machine configured to receive a computer-readable mediumstoring computer-readable instructions. The instructions can be executedby computer-executable components integrated by computer-executablecomponents integrated with apparatuses and networks of the typedescribed above. The computer-readable medium can be stored on anysuitable computer readable media such as RAMs, ROMs, flash memory,EEPROMs, optical devices (CD or DVD), hard drives, floppy drives, or anysuitable device. The computer-executable component can be a processorbut any suitable dedicated hardware device can (alternatively oradditionally) execute the instructions.

Interfaces

In FIG. 6, customers 304-1, 304-2, and 304-3 are placing orders with anestablishment 300 that includes a food creation robot 308-1. Forexample, the food creation robot 308-1 may be configured to createsandwiches such as hamburgers. Subsystems 312 of the food creation robot308-1 may therefore include, for example, a subsystem that slices,butters, and toasts hamburger buns, a subsystem that slices anddispenses vegetables, a subsystem that dispenses liquid sauces, asubsystem that dispenses powdered seasonings, a subsystem that grindsand cooks meat, etc. Subsystems 312 are coordinated by a robot controlmodule 316.

A networking router 320 permits the robot control module 316 tocommunicate with an ordering system 324. In various establishments,multiple food creation robots may be present. As an example only, asecond food creation robot 308-2 is shown in FIG. 6. A wireless accesspoint 328 may provide wireless Internet access to customers of theestablishment 300. A router 332 connects the wireless access point 328to a distributed communications system 336, which may include theInternet.

The ordering system 324 may receive orders from the distributedcommunications system 336 via a bridge 340, which may bridge between theordering system 324 on an internal network and the router 332 on anexternal network. Orders may also arrive in the order system 324 via thewireless access point 328. In various implementations, a second internalwireless network may be used to allow employee devices to communicatewith the ordering system 324 without traversing the bridge 340. Forexample, a concierge 350 may assist customers, such as the customer304-1, with placing orders using an ordering terminal 354.

The ordering terminal 354 may wirelessly communicate with the wirelessaccess point 328 or, because the ordering terminal 354 is owned by theestablishment 300, with a wireless access point (not shown) thatcommunicates with the ordering system 324 without traversing the bridge340. As an example only, the ordering terminal 354 may be a kioskimplemented with a Windows operating system computer, a MacOS operatingsystem computer, or an iOS operating system tablet. The customer 304-2may place an order using a mobile device 358-1, such as an iOS operatingsystem smartphone. Similarly, the customer 304-3 may place an orderusing a mobile device 358-2. One or both of the mobile devices 358 maybe present in the establishment 300 and use the wireless access point328 to obtain Internet access. In other implementations, one or both ofthe mobile devices 358 may connect to the distributed communicationssystem 336 via another path, such as a different wireless local areanetwork or a cellular network.

The orders are received and managed by the ordering system 324. Invarious implementations, the ordering system 324 may assign an order toeither the food creation robot 308-1 or the food creation robot 308-2depending on availability of ingredients and timing. In variousimplementations, a remote server (see FIG. 3) may assign ordersoriginating outside of the establishment 300 to a selected establishmentthat can provide a customer's precise order. Once the order has beenassigned to the establishment 300, the ordering system 324 may thendecide which of the food creation robots 308 will receive the order.

A status display system 362 includes a visual display, such as a liquidcrystal display (LCD) screen, and a control module to drive the displayas described in more detail below. FIGS. 7A-14D depict ornamentaldesigns and animations that can be shown on the display.

When placing an order using the mobile device 358-1, the customer 304-2may use a website for the establishment 300. Meanwhile, the customer304-3 may have downloaded an ordering application to the mobile device358-2, such as from the Apple App Store digital distribution platform orthe Google Play Store digital distribution platform. The ornamentaldesign produced on the mobile device 358-1 using a web application or onthe mobile device 358-2 using a native application may includeornamental designs as shown below in FIGS. 15A-18F.

In FIGS. 7A-7G, a front view of a portion of a display screen with ananimated graphical user interface is shown. An order for a customernamed Mary is indicated by three shapes. In FIG. 7A, these shapes arecircles, although other shapes, such as squares, triangles, squares,pentagons, etc. may be used. The shapes are not limited to polygons andmay include other shapes such as the stylized outline of a hamburger ora five-pointed star. In FIG. 7A, the three circles correspond to threeingredients of a menu item, such as a hamburger. For example, the firstcircle may correspond to the bun, the second circle may correspond toketchup, and the third circle may correspond to a hamburger patty.

The three white circles in FIG. 7A may be white or another neutralcolor, such as gray, to indicate that they are still awaitingfulfillment. In FIG. 7B, the first white circle is covered by a coloredcircle indicating that that corresponding ingredient of the food itemhas been placed. For example, the bun may have been placed in a foodcarrier, such as a clamshell. When the next ingredient, such as ketchup,is added to the food item, an animation shown in FIG. 7B-7G shows asecond colored circle rolling into place to cover the second whitecircle. The second colored circle is shown with diagonalhatching—however, this is simply shown to differentiate it from thefirst circle shown in black. The first and second circles may be thesame color. Each of these circles may be a single solid color or mayhave a patterned fill. One or both of the circles may be split down themiddle to create two semicircles, each of which is filled with adifferent solid color. In various implementations, each possibleingredient loaded into the food creation robots 308 may correspond to aspecific color. This color may not be unique—in other words, a singlecolor or design may be used for more than one ingredient.

In FIGS. 8A-8G, a similar animation to that of FIG. 7A-7G is shown. InFIGS. 8A-8G, the second circle appears in front of the first circleinstead of rolling out from behind the first circle.

In FIGS. 9A-9G, an alternative to the empty circles of FIG. 7A and FIG.8A is shown. In FIG. 9A, the circles are replaced by a roundedrectangle. In various implementations, the length of the roundedrectangle may be the same as the distance from the first white circle tothe last white circle of FIG. 7A. In other words, while the number ofcircles in FIG. 7A and FIG. 8A indicates the number of ingredients in afood item, the length of the rounded rectangle in FIG. 9A indicates thenumber of food items. In FIGS. 9B-9G, the second circle rolls out frombehind the first circle into the middle of the rounded rectangle. Inother words, the ending locations of the first and second circles may beidentical to that of FIG. 7G and FIG. 8G, but the final empty circle ofFIG. 7G is replaced by the rounded rectangle indicating that there isstill an ingredient left to fulfill.

While the black circle and the hashed circle are representeddifferently, this is not to disclaim the possibility that both circleswill be identically colored. However, showing both circles havingidentical coloring would make it more difficult to picture theanimation. In other words, the ornamental design relies on the fact thatthe second circle rolls into place but does not require that the secondcircle be differently colored from the first circle. In addition, thename Mary does not form any part of the ornamental design, as the namemay be replaced by whoever has placed the order.

In FIG. 10, two different food item orders are shown. A nine-ingredientfood item is shown to be ready for pickup. Meanwhile, a seven-ingredientfood item is shown to be still in progress, as indicated by the vacancyin the rounded rectangle, which has space for three additional circles.As shown in FIG. 10, the rounded rectangle may disappear once the orderis ready for pickup, leaving behind only the completed circles. Inaddition, in FIG. 10, three of the circles are shown to havedifferently-colored hemispheres. A certain pairing of coloredhemispheres may correspond to a specific one or more ingredients.

In FIG. 11, the same orders as in FIG. 10 are shown, but with adifferent ornamental design. Specifically, the in-progress orderincludes three empty circles on the right, indicated by a finer lineweight. These empty circles may be colored white or some other neutralcolor, such as gray, to indicate that they remain unfulfilled in thefood item. Meanwhile, the first four circles, indicated with a heavierline weight, may be colored in more darkly than the three empty circleson the right to indicate that the first four ingredients are fulfilledin the food item. The ready for pickup and in-progress text in bothFIGS. 10 and 11 is not part of the ornamental design and can be shown inphantom.

FIGS. 12A-12D depict an animation of a seventh circle appearing androtating into place to indicate that the seventh ingredient has beenadded to the food item. As indicated by the size of the roundedrectangle, an eighth ingredient is necessary before the food item iscomplete. Although the seventh circle is shown bisected into twohemispheres, which may be colored differently, this bisection is simplyfor the purposes of demonstrating the animation. The bisection cantherefore be shown in phantom and the circle rolling into place may haveany uniform or non-uniform fill.

In FIGS. 13A-13D, an example leaderboard display for the status displaysystem 362 is presented. In FIG. 13A, a circular arc of names andcorresponding orders (which may be ornamentally represented as describedabove) is displayed. A horizontal line indicates the break betweenfulfilled (completed) orders and pending orders. FIGS. 13A-13D depict ananimation in response to an order being completed. In this example, theorder of George Z is completed. The animation shows in FIG. 13B theremoval of the horizontal line, in FIG. 13C the movement of George Z andhis corresponding order up along the arc, and in FIG. 13D the redrawingof the horizontal line below George Z. In FIGS. 13C and 13D, an arrow(which can be shown in phantom) indicates the movement of George Z in anangular manner along the curve of the arc. In FIG. 13C, the priorposition of George Z is shown in outline to convey the sense ofmovement. The specific names and specific orders for each of thecustomers can be shown in phantom, while the shape of the text on anarc, the removal and reinsertion of the horizontal line, and themovement of text from below the line to the above the line forms theornamental design.

In FIGS. 14A-14D, the removal of completed orders after a period of timeis shown. The period of time may be fixed or may be based on how manyorders are in the queue. For example, during a slow time at theestablishment 300, the removal of the names from the leaderboard may beperformed after a greater delay. FIGS. 14A-14D depict an animation wherethe orders of two customers are removed from the completed list and theorders of two other customers move from being in progress to being inthe completed list. In FIG. 14B, the horizontal line disappears. In FIG.14C, all of the names move up along the circular arc. The two namesremoved from the list, Chris H and Jessica K, either slide off the topof the display or fade into the background color of the display. In FIG.14D, the horizontal line is redrawn between completed orders, includingthose of David B and George Z, and in-progress orders, includingAnastasia B.

In various implementations, the left edges of the names in FIG. 14D mayfollow the same circular arc as is shown clearly in FIG. 14A and FIG.14B. In other words, the left edges of the names in FIG. 14D, which donot follow a circular arc, may instead be aligned along the circular arcof FIGS. 13A-14B. Similarly, in FIG. 14C, the location of George Z maybe moved to more closely follow the shape of the arc.

In FIG. 15A, an example display screen, such as for the mobile device358-2, is shown with an ornamental design for a user interface. In oneexample ornamental design, everything would be shown in phantom exceptfor the text 12:11, which indicates the amount of time remaining beforethe order is ready, along with the circle sector surrounding the text12:11. As seen in more detail in FIGS. 15B and 15C, the circle sectorincludes a portion that is one color and a second portion that is asecond color. As more and more of the circle sector becomes the firstcolor, the time counts down. Therefore, the circle sector is a visualindication corresponding to the textual indication of order progress. Inanother ornamental design, everything is shown in phantom except thecircle sector, the text 12:11, and the text indicating that “Estimatedpickup time is.” The specific time of 10:55 AM will vary and thereforedoes not form part of the design. In another ornamental design,everything in FIG. 15A would be shown in phantom except for thearrangement of the payment, help, settings, and about text andcorresponding icons. In another example ornamental design, everything isshown in phantom except for the text “creator,” the circle and circlesector to the left of “creator,” and the hamburger icon to the right of“creator.”

In FIG. 15B, an enlarged view of the text 12:11 and surrounding circlesector shown in FIG. 14A is presented. A first color is indicated by anempty fill, while a second color is indicated by a diagonal hatch fill.These colors may be complementary colors, completely different colors,or may be variants of each other. For example, the hue and saturationmay be the same, while the lightness or value differs. As the amount ofthe first color increases, the waiting time decreases because the orderis closer to completion. This is shown in FIG. 15C, where the time tocompletion of the order has been reduced to three minutes and fiveseconds, and the amount of the second color in the circle sector hasbeen correspondingly reduced. The animation shown in FIGS. 15B-15C forman ornamental design where the actual text may be shown in phantom orreplaced with the word “text” as a placeholder.

In FIG. 16A, another ornamental design for a display screen is shown.For example, one ornamental design may show everything in phantom exceptfor the text directions, receipt, sourcing, and share, along with thecorresponding four circled icons. In another ornamental design,everything is shown in phantom except for the text 15:00 and the circlesector beginning and ending at that text. In yet another ornamentaldesign, everything is shown in phantom except for the 15:00 text, thecircle sector, and the checkmark within the circle sector. In yetanother ornamental design, the only items not shown in phantom are thecircle sector, the check mark, and the text “Your order is added to thequeue.”

In various implementations, the coloring of the checkmark may be thesame as the coloring of the second color of the circle sector. The firstcolor of the circle sector is indicated by an empty fill, while thesecond color is indicated by a diagonal hatching. In otherimplementations, the color of the checkmark may instead match the firstcolor of the circle sector. In various implementations, the text 15:00may be shown in phantom or may be replaced by the word “text” toindicate that the time itself does not form part of the ornamentaldesign.

An ornamental design with an animation is depicted from FIGS. 16A-16F.In this animation, the portion of the circle sector that has the firstcolor (indicated by the empty fill) increases from FIGS. 16A-16F. Inanother ornamental design, the animation of FIGS. 16A-16F is completedby the ornamental design of FIG. 16G, which is an ornamental imageindicating that a hamburger is ready for pickup. As an example, theanimation may be depicted by representing everything from FIG. 16A-FIG.16F in phantom except for the circle sector. In another ornamentaldesign, everything from FIG. 16A-16F is represented in phantom exceptfor the circle sector and the textual time.

FIG. 16B constitutes a static ornamental design with everything shown inphantom except for the circle sector and the bun halves within thecircle sector. FIG. 16C may be a static ornamental design whereeverything is shown in phantom except for the circle sector and the beefpatty within the circle sector. FIG. 16D may be a static ornamentaldesign in which everything is shown in phantom except for the circlesector and the ornamental sauce representation. FIG. 16E may be a staticornamental design in which everything is shown in phantom except for thecircle sector and the two tomato slices, the lettuce leaf, and the onionslice. In the static ornamental designs of FIGS. 16B-16E, the circlesector may be shown without differentiating between the two colorsbecause the exact time at which the corresponding image is presented maynot align with the proportion of first and second colors in the circlesector.

In FIG. 17A, an example pairing of burger, French fries, and soda isgraphically depicted. A customer may add this pairing to their cart forordering by selecting (such as with their finger) the ADD button. Uponselecting the ADD button, on ornamental animation shown in FIGS. 17B-17Imay be initiated. In FIG. 17B, four icons are shown at the bottom of thedisplay screen in an unselected state. The selected state may beindicated by a lack of color, by a thin line width, and/or by a lightershading. These four icons correspond to, from left to right, ahamburger, French fries, a drink, and a dessert. The unselected iconsare then graphically selected in turn to indicate which of the items arebeing added to the cart.

In FIG. 17C, the first icon is visually highlighted. For example,highlighting may be indicated by darkening the background fill of theicon, or choosing a darker shade for the hamburger within the icon. Inanother example, color may be added to the icon. Highlighting isindicated in FIG. 17C by cross-hatching. In FIG. 17D, the second icon ishighlighted to indicate that French fries are being added to the cart.FIG. 17E, the third icon is highlighted to indicate that a drink isbeing added to the cart. Once the relevant icons are highlighted, theicons begin to collapse upon themselves as shown in FIG. 17F.

Although FIG. 17F shows the highlighted icons being in front of theunhighlighted icon, in various other implementations, the unhighlightedicon may remain in front. In FIG. 17F, highlighted icons that are moreto the right are more in the foreground. However, this may be reversedso that the icons more to the left are more in the foreground. In otherwords, in that alternate implementation, the second icon would slideunderneath the first icon and the third icon would slide underneath thesecond icon. In FIG. 17G, the icons continue to collapse into a singlelocation. In FIG. 17H, the icons have fully collapsed and are located inthe same location. The foreground icon may remain visible, which in thiscase is the third icon for a drink.

In FIG. 17I, the remaining icon is then replaced with a numberindicating the number of items in the cart. Although the number three isshown in FIG. 17I, the number would be different based on the number ofitems that are added to the cart. In addition, if items had previouslybeen added to the cart, the number may reflect the total number of itemsin the cart including the three newly added items and the prior items.The animation of FIG. 17B-17H may be represented as an ornamental designwhere everything in FIG. 17B-FIG. 17H is shown in phantom except for thefour icons. In one example of the ornamental design, everything is shownin phantom except for the four icons in FIG. 17B-17H. However, the exactdesign of each icon does not form part of this ornamental animation andtherefore the icon within the circle would also be shown in phantom foreach of the four icons. In another example of an ornamental animation,the animation of FIG. 17B-FIG. 17H would extend to FIG. 17I, where anumber replaces the icon of FIG. 17H. In other words, one ornamentalanimation proceeds from FIG. 17B-17H, while another ornamental animationproceeds from FIG. 17B-FIG. 17I.

In FIG. 18A, another ornamental design is presented in which a customercan choose specific ingredients for their own food item, such as ahamburger. In one ornamental design, everything in FIG. 18A would beshown in phantom except for the text of seasoning, sauces, cheeses,proteins, and greens, as well as the five corresponding icons. Inanother ornamental design, everything in FIG. 18A would be shown inphantom except for the top and bottom bun, the top sauce, the bottomsauce, the lettuce, the onions, the tomato, the cheese, and the burgerpatty.

In FIG. 18B, an ornamental design may be shown in response to the userselecting the sauces button in FIG. 18A. The default sauce for thisparticular burger, in one example, is aioli present at a level of 18 mL.If the customer instead desires a seaweed sauce, the customer can selectthe button to the right of aioli to select the seaweed sauce. Thisresults in FIG. 18C. In FIG. 18C, an ornamental design presents optionsfor how much seaweed sauce to include and the position of the seaweedsauce. For example, the position may be adjusted between the top andbottom of the sandwich or between the left and right sides of thesandwich. For example, a customer may specify one sauce for one side andanother sauce for the other side to have two different flavor profilesin the same sandwich.

In one ornamental design of FIG. 18C, everything is shown in phantomexcept for the word amount, the word position, and the six circles belowthe words amount and position. These circles indicate graphically arelative amount of the sauce and a relative position of the sauce. Toreduce the amount, the user would move the large circle to the left,while to increase the amount, the user customer would move the largecircle to the right. Similarly, to position the sauce more to the leftof the hamburger, the customer would move the large circle below theword position to the left and similarly would move the circle to theright to adjust the position of the sauce towards the right of thesandwich.

To assist the user in more finely controlling the amount of the sauce,when the user selects the amount, the circles may expand as shown inFIG. 18D. In FIG. 18D, the circles expand to fill the width of thescreen and the large circle becomes oblong, allowing the customer to usethe entire width of the display screen to finely adjust the amount ofsauce. In FIG. 18D, the amount of sauce has been increased, as indicatedby the numeric amount of 27 mL. In addition, the graphical saucerepresentation underneath “top bun sauces” is more fully shaded. Thisindicates the presence of additional sauce. The graphical saucerepresentation may be formed from two colors, with the first colorindicated by hashing and a second color indicated by no fill. As thecustomer moves the oblong circle back and forth underneath the amounttext, the numeric amount of the sauce varies as does the amount of thegraphical sauce representation that is filled in with the first color.

In FIG. 18E, the customer has moved the oblong circle to the left todecrease the amount and therefore the amount of the graphical saucerepresentation that is shown in the first color has been reduced. Inaddition, the numeric readout has been reduced to 12 mL. Once thecustomer releases the amount slider, such as by lifting their fingerfrom the display screen, the circles collapse back and the amount isindicated on a smaller scale. If FIG. 18F, the amount has been returnedto the center and the additional small circles are now collapsed. Thecentral amount corresponds to 18 mL.

In FIGS. 19A-19D, an animation in a portion of a display screen beginsat FIG. 19A. The large circle is shown with diagonal crosshatching in afirst direction while the smaller circles are shown with diagonalcrosshatching in a second direction. This indicates that the colors ofthese circles may differ. However, that is not a requirement. In otherwords, the color of the large circle be the same as the color of thesmall circles. Upon selection by the customer of the large circle inFIG. 19A, the animation proceeds to FIG. 19B, where additional smallcircles are displayed to provide more room for selection.

Moving the large circle to the right is depicted in FIG. 19C. When thecustomer then releases their finger from the large circle, FIG. 19Dresults, where the original set of small circles from FIG. 19A is shown,but the different amount selected in FIG. 19C is reflected by the newposition of the large circle. In one example ornamental animation, theword “amount” would be shown in phantom while the circles would be shownwith solid lines. In another ornamental animation, the large circle mayremain in the center in FIG. 19C and therefore FIG. 19D would show thelarge circle still in the center. In other words, in such an ornamentalanimation, FIGS. 19B and 19C would be the same and FIGS. 19A and 19Dwould be the same.

FIGS. 20A-20D are similar to that of FIGS. 19A-19D. However, when thecustomer selects the large circle and the small circles expand andmultiply, the large circle becomes oblong. As the customer selects adifferent amount in FIG. 20C, the oblong circle moves accordingly. Oncethe customer releases the oblong circle, the small circles collapse andthe oblong circle returns to being circular in FIG. 20D. While circlesare shown in FIGS. 18, 19, and 20, other shapes, such as polygons, maybe used instead of circles.

Phantom text or lines, also referred to as broken lines, shown in aportion of a display screen are for illustrative purposes only and formno part of the claimed design. An animation, as described above, is asequence of transitional images for a display screen or portion thereof.For animations, the process by which, and the period in which, one imagetransitions to another forms no part of the claimed ornamental design.

Overall

The foregoing description is merely illustrative in nature and is in noway intended to limit the disclosure, its application, or uses. Thebroad teachings of the disclosure can be implemented in a variety offorms. Therefore, while this disclosure includes particular examples,the true scope of the disclosure should not be so limited since othermodifications will become apparent upon a study of the drawings, thespecification, and the following claims. It should be understood thatone or more steps within a method may be executed in different order (orconcurrently) without altering the principles of the present disclosure.Further, although each of the embodiments is described above as havingcertain features, any one or more of those features described withrespect to any embodiment of the disclosure can be implemented in and/orcombined with features of any of the other embodiments, even if thatcombination is not explicitly described. In other words, the describedembodiments are not mutually exclusive, and permutations of one or moreembodiments with one another remain within the scope of this disclosure.

Spatial and functional relationships between elements (for example,between modules, circuit elements, semiconductor layers, etc.) aredescribed using various terms, including “connected,” “engaged,”“coupled,” “adjacent,” “next to,” “on top of,” “above,” “below,” and“disposed.” Unless explicitly described as being “direct,” when arelationship between first and second elements is described in the abovedisclosure, that relationship can be a direct relationship where noother intervening elements are present between the first and secondelements, but can also be an indirect relationship where one or moreintervening elements are present (either spatially or functionally)between the first and second elements.

As used herein, the phrase at least one of A, B, and C should beconstrued to mean a logical (A OR B OR C), using a non-exclusive logicalOR, and should not be construed to mean “at least one of A, at least oneof B, and at least one of C.” The term subset does not necessarilyrequire a proper subset. In other words, a first subset of a first setmay be coextensive with (equal to) the first set.

In the figures, the direction of an arrow, as indicated by thearrowhead, generally demonstrates the flow of information (such as dataor instructions) that is of interest to the illustration. For example,when element A and element B exchange a variety of information butinformation transmitted from element A to element B is relevant to theillustration, the arrow may point from element A to element B. Thisunidirectional arrow does not imply that no other information istransmitted from element B to element A. Further, for information sentfrom element A to element B, element B may send requests for, or receiptacknowledgements of, the information to element A.

In this application, including the definitions below, the term “module”or the term “controller” may be replaced with the term “circuit.” Theterm “module” may refer to, be part of, or include: an ApplicationSpecific Integrated Circuit (ASIC); a digital, analog, or mixedanalog/digital discrete circuit; a digital, analog, or mixedanalog/digital integrated circuit; a combinational logic circuit; afield programmable gate array (FPGA); a processor circuit (shared,dedicated, or group) that executes code; a memory circuit (shared,dedicated, or group) that stores code executed by the processor circuit;other suitable hardware components that provide the describedfunctionality; or a combination of some or all of the above, such as ina system-on-chip.

The module may include one or more interface circuits. In some examples,the interface circuit(s) may implement wired or wireless interfaces thatconnect to a local area network (LAN) or a wireless personal areanetwork (WPAN). Examples of a LAN are Institute of Electrical andElectronics Engineers (IEEE) Standard 802.11-2016 (also known as theWIFI wireless networking standard) and IEEE Standard 802.3-2015 (alsoknown as the ETHERNET wired networking standard). Examples of a WPAN arethe BLUETOOTH wireless networking standard from the Bluetooth SpecialInterest Group and IEEE Standard 802.15.4.

The module may communicate with other modules using the interfacecircuit(s). Although the module may be depicted in the presentdisclosure as logically communicating directly with other modules, invarious implementations the module may actually communicate via acommunications system. The communications system includes physicaland/or virtual networking equipment such as hubs, switches, routers, andgateways. In some implementations, the communications system connects toor traverses a wide area network (WAN) such as the Internet. Forexample, the communications system may include multiple LANs connectedto each other over the Internet or point-to-point leased lines usingtechnologies including Multiprotocol Label Switching (MPLS) and virtualprivate networks (VPNs).

In various implementations, the functionality of the module may bedistributed among multiple modules that are connected via thecommunications system. For example, multiple modules may implement thesame functionality distributed by a load balancing system. In a furtherexample, the functionality of the module may be split between a server(also known as remote, or cloud) module and a client (or, user) module.

Some or all hardware features of a module may be defined using alanguage for hardware description, such as IEEE Standard 1364-2005(commonly called “Verilog”) and IEEE Standard 1076-2008 (commonly called“VHDL”). The hardware description language may be used to manufactureand/or program a hardware circuit. In some implementations, some or allfeatures of a module may be defined by a language, such as IEEE1666-2005 (commonly called “SystemC”), that encompasses both code, asdescribed below, and hardware description.

The term code, as used above, may include software, firmware, and/ormicrocode, and may refer to programs, routines, functions, classes, datastructures, and/or objects. The term shared processor circuitencompasses a single processor circuit that executes some or all codefrom multiple modules. The term group processor circuit encompasses aprocessor circuit that, in combination with additional processorcircuits, executes some or all code from one or more modules. Referencesto multiple processor circuits encompass multiple processor circuits ondiscrete dies, multiple processor circuits on a single die, multiplecores of a single processor circuit, multiple threads of a singleprocessor circuit, or a combination of the above. The term shared memorycircuit encompasses a single memory circuit that stores some or all codefrom multiple modules. The term group memory circuit encompasses amemory circuit that, in combination with additional memories, storessome or all code from one or more modules.

The term memory circuit is a subset of the term computer-readablemedium. The term computer-readable medium, as used herein, does notencompass transitory electrical or electromagnetic signals propagatingthrough a medium (such as on a carrier wave); the term computer-readablemedium may therefore be considered tangible and non-transitory.Non-limiting examples of a non-transitory computer-readable medium arenonvolatile memory circuits (such as a flash memory circuit, an erasableprogrammable read-only memory circuit, or a mask read-only memorycircuit), volatile memory circuits (such as a static random accessmemory circuit or a dynamic random access memory circuit), magneticstorage media (such as an analog or digital magnetic tape or a hard diskdrive), and optical storage media (such as a CD, a DVD, or a Blu-rayDisc).

The apparatuses and methods described in this application may bepartially or fully implemented by a special purpose computer created byconfiguring a general purpose computer to execute one or more particularfunctions embodied in computer programs. The functional blocks andflowchart elements described above serve as software specifications,which can be translated into the computer programs by the routine workof a skilled technician or programmer.

The computer programs include processor-executable instructions that arestored on at least one non-transitory computer-readable medium. Thecomputer programs may also include or rely on stored data. The computerprograms may encompass a basic input/output system (BIOS) that interactswith hardware of the special purpose computer, device drivers thatinteract with particular devices of the special purpose computer, one ormore operating systems, user applications, background services,background applications, etc.

The computer programs may include: (i) descriptive text to be parsed,such as HTML (hypertext markup language), XML (extensible markuplanguage), or JSON (JavaScript Object Notation), (ii) assembly code,(iii) object code generated from source code by a compiler, (iv) sourcecode for execution by an interpreter, (v) source code for compilationand execution by a just-in-time compiler, etc. As examples only, sourcecode may be written using syntax from languages including C, C++, C#,Objective-C, Swift, Haskell, Go, SQL, R, Lisp, Java®, Fortran, Perl,Pascal, Curl, OCaml, Javascript®, HTML5 (Hypertext Markup Language 5threvision), Ada, ASP (Active Server Pages), PHP (PHP: HypertextPreprocessor), Scala, Eiffel, Smalltalk, Erlang, Ruby, Flash®, VisualBasic®, Lua, MATLAB, SIMULINK, and Python®.

What is claimed is:
 1. A method of fulfilling custom food orders, themethod comprising: obtaining feedback from a user through an orderingapplication executed on at least one of a mobile computing device, asecond computing device, and a remote server, wherein the feedbackrelates to a first ingredient in a first food item of a first food orderfollowing fulfillment of the first food order; determining, using atleast one of the mobile computing device, the second computing device,and the remote server, a preferred variation associated with the firstingredient based on (i) the feedback and (ii) a first recipe used tomake the first food item; updating, using at least one of the mobilecomputing device, the second computing device, and the remote server, ataste profile associated with the user based on the first food order andthe preferred variation associated with the first ingredient; subsequentto obtaining the feedback, receiving, from the user through the orderingapplication executed on at least one of the mobile computing device, thesecond computing device, and the remote server, a second food order,wherein the second food order includes a second food item having thefirst ingredient; retrieving, using at least one of the mobile computingdevice, the second computing device, and the remote server, a secondrecipe associated with the second food item; in response to the secondrecipe including the first ingredient, selectively modifying, using atleast one of the mobile computing device, the second computing device,and the remote server, the first ingredient in the second recipe basedon the taste profile; and in response to the second recipe including thefirst ingredient, controlling a food assembly apparatus, using at leastone of the mobile computing device, the second computing device, and theremote server, to prepare the second food item according to the secondrecipe with the first ingredient as selectively modified.